home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / libraries / gfront11.lha / GUIFront / Developer / Doc / guifront.doc
Encoding:
Text File  |  1994-11-01  |  97.4 KB  |  2,578 lines

  1. TABLE OF CONTENTS
  2.  
  3. guifront.library/--structures--
  4. guifront.library/GF_CreateGUIAppA
  5. guifront.library/GF_DestroyGUIapp
  6. guifront.library/GF_CreateGUIA
  7. guifront.library/GF_DestroyGUI
  8. guifront.library/GF_GetGUIAttrA
  9. guifront.library/GF_SetGUIAttrA
  10. guifront.library/GF_GetGUIAppAttrA
  11. guifront.library/GF_SetGUIAppAttrA
  12. guifront.library/GF_GetIMsg
  13. guifront.library/GF_Wait
  14. guifront.library/GF_ReplyIMsg
  15. guifront.library/GF_SetAliasKey
  16. guifront.library/GF_BeginRefresh
  17. guifront.library/GF_EndRefresh
  18. guifront.library/GF_SetGadgetAttrsA
  19. guifront.library/GF_GetGadgetAttrsA
  20. guifront.library/GF_LockGUI
  21. guifront.library/GF_UnlockGUI
  22. guifront.library/GF_LoadPrefs
  23. guifront.library/GF_SavePrefs
  24. guifront.library/GF_LockPrefsList
  25. guifront.library/GF_UnlockPrefsList
  26. guifront.library/GF_FirstPrefsNode
  27. guifront.library/GF_NextPrefsNode
  28. guifront.library/GF_CopyAppID
  29. guifront.library/GF_GetPrefsAttrA
  30. guifront.library/GF_SetPrefsAttrA
  31. guifront.library/GF_DeletePrefs
  32. guifront.library/GF_NotifyPrefsChange
  33. guifront.library/GF_EndNotifyPrefsChange
  34. guifront.library/GF_AslRequest
  35. guifront.library/GF_EasyRequestArgs
  36. guifront.library/GF_ProcessListView
  37. guifront.library/GF_SignalPrefsVChange
  38. guifront.library/--structures--               guifront.library/--structures--
  39.  
  40.     GADGETSPEC
  41.  
  42.         This is probably the most important structure of GUIFront. It is
  43.         parsed by GF_CreateGUIA() and subsequently used to create the
  44.         final gadget which will appear in your GUI.
  45.  
  46.         GadgetSpec structures may be reused in calls to GF_CreateGUIA(),
  47.         since GUIFront does not alter any user-settable fields in the
  48.         structure. Some fields will however be overwritten, as explained
  49.         below.
  50.  
  51.         Explanation of data fields (see libraries/guifront.h as well):
  52.  
  53.         GadgetSpec.gs_Kind (int)
  54.  
  55.             The gadget "kind". All normal GadTools kinds are supported,
  56.             as well as one extra kind which is used frequently in many
  57.             applications:
  58.  
  59.             GETALT_KIND ("Get Alternative" or just "get-something")
  60.  
  61.             This new kind supports the following tags:
  62.  
  63.             GA_Disabled (BOOL)
  64.  
  65.                 Works just like normal GadTools gadgets.
  66.  
  67.             ALT_Image (int)
  68.  
  69.                 The GETALT_KIND actually breaks down into a number of
  70.                 different sub-kinds, as dictated by this tag:
  71.  
  72.                 ALTI_GetDir
  73.  
  74.                     This will give you a gadget with a "folder" image rendered
  75.                     inside. Typically used for directory selections.
  76.  
  77.                 ALTI_GetFile
  78.  
  79.                     This gives you a gadget with a "paper-with-bent-corner"
  80.                     image inside. Typically used for file selections.
  81.  
  82.                 ALTI_GetMisc (default)
  83.  
  84.                     This gives you a gadget with an "arrow-down" image
  85.                     inside. You can use this for selections which aren't for
  86.                     files or directories (names from a list, for example).
  87.  
  88.                 ALTI_GetFont
  89.  
  90.                     This subkind gives you a gadget with an "A" inside,
  91.                     suitable for Font selections.
  92.  
  93.                 ALTI_GetScreenMode
  94.  
  95.                     This subkind gives you a gadget with a "monitor" image
  96.                     usable for screen mode selections. (37.3)
  97.                     Note: Worked like ALTI_GetMisc under pre-37.3 versions.
  98.  
  99.             ALT_AslRequester (BOOL)
  100.  
  101.                 If you supply a non-null value for this tag, GUIFront
  102.                 actually takes care of all the underlying ASL magic
  103.                 required in order to make the subkind work. For example,
  104.                 if the subkind is ALTI_GetFont, GUIFront automatically
  105.                 pops up an ASL font requester whenever the user clicks on
  106.                 this gadget. If the user cancels the ASL requester, your
  107.                 application won't even hear about it.
  108.  
  109.                 On the other hand, if the user does select a font, you will
  110.                 hear an IDCMP_GADGETUP for the GETALT_KIND gadget, after
  111.                 which you should interrogate the ASL font requester about
  112.                 which font the user selected. To accomplish this you must
  113.                 use the ALT_AslRequester tag in a call to GF_GetGadgetAttrsA(),
  114.                 which in turn gives you a pointer to the actual ASL requester
  115.                 structure allocated by GUIFront. The selected font is then
  116.                 available in fo->fo_Attr.ta_Name (i.e. as normal).
  117.  
  118.                 Note that automatic ASL requesters will lock all windows
  119.                 of your GUIFrontApp for the duration of the requester.
  120.  
  121.                 Automatic requesters are supported for ALTI_GetFile,
  122.                 ALTI_GetFont, ALTI_GetDir and ALTI_GetScreenMode.
  123.  
  124.         GadgetSpec.gs_MinWidth (UWORD)
  125.  
  126.             If non-zero, GUIFront will set the width of the gadget hitbox to
  127.             the width of this number of characters of the actual font being
  128.             used. This is useful when you want to specify how many characters
  129.             you want to be visible in (for example) string gadgets.
  130.  
  131.         GadgetSpec.gs_MinHeight (UWORD)
  132.  
  133.             If non-zero, GUIFront will set the height of the gadget hitbox to
  134.             the height of this number of character lines of the actual font
  135.             being used. This is particulary useful for specifying the minimum
  136.             number of lines visible in a listview gadget, but may also be used
  137.             for other resizable kinds.
  138.  
  139.         GadgetSpec.gs_ng (struct NewGadget)
  140.  
  141.             This is a fully embedded NewGadget structure. Set all
  142.             fields just like you would in a normal call to GadTools'
  143.             CreateGadget() funcion. Exceptions include:
  144.  
  145.             ng_LeftEdge
  146.             ng_TopEdge
  147.             ng_Width
  148.             ng_Height
  149.  
  150.                 Data in these fields will be overwritten by the position
  151.                 and size information of the final GadTools gadget. Do not
  152.                 use for private data.
  153.  
  154.                 Note that you can examine these fields to learn the exact
  155.                 pixel position of the hitbox of your gadget, in case you want
  156.                 to do some special rendering on top of it.
  157.  
  158.             ng_GadgetText
  159.  
  160.                 If the GS_Localized gs_Flags is set (see later), you would
  161.                 probably use this field to store the catalog string number
  162.                 (just a suggestion).
  163.  
  164.             ng_TextAttr
  165.             ng_VisualInfo
  166.  
  167.                     Data in these field will be overwritten. Do not use.
  168.  
  169.         GadgetSpec.gs_Tags (struct TagItem *)
  170.  
  171.             This field must contain the tag list to use when calling GadTools'
  172.             CreateGadget function. Currently, GUIFront imposes a few
  173.             restrictions on tags for certain kinds:
  174.  
  175.                 SLIDER_KIND:
  176.  
  177.                     All forms of level indications are not yet supported by
  178.                     the layout engine.  This includes GTSL_MaxLevelLen,
  179.                     GTSL_LevelFormat, GTSL_LevelPlace and GTSL_MaxPixelLen.
  180.                     Using any of these tags may lead to strange looking GUIs.
  181.  
  182.                     As a temporary workaround, simply put an invisible dummy
  183.                     TEXT_KIND gadget next to the slider, so GadTools will
  184.                     render the level indication on top of it.
  185.  
  186.                 MX_KIND:
  187.  
  188.                     GTMX_TitlePlace supported (even under V37), but only for
  189.                     PLACETEXT_ABOVE and PLACETEXT_BELOW. All other title
  190.                     locations are illegal. Using no title at all is of course
  191.                     still perfectly alright.
  192.  
  193.             GUIFront also changes the way certain tags are interpreted:
  194.  
  195.                 SCROLLER_KIND:
  196.  
  197.                     If you are using GS_DefaultTags, specify {GTSC_Arrows, 0}
  198.                     to _disable_ scroller arrows. Otherwise, GUIFront will
  199.                     append some appropriately sized arrows to your scroller
  200.                     gadget.
  201.  
  202.                 LISTVIEW_KIND:
  203.  
  204.                     For GTLV_ShowSelected, do *NOT* supply a pointer to a
  205.                     pre-created gadtools STRING_KIND. In stead, supply either
  206.                     NULL or a pointer to a STRING_KIND GadgetSpec, initialized
  207.                     as normal. GUIFront will do the rest.
  208.  
  209.                     GTLV_MakeVisible is supported under V37.
  210.  
  211.         GadgetSpec.gs_Flags (UWORD)
  212.  
  213.             These flags control various aspects in relation to this
  214.             particular gadget. Defined bits are:
  215.  
  216.             GS_NoWidthExtend
  217.             GS_NoHeightExtend
  218.  
  219.                 During layout it may be necessary for the layout engine to
  220.                 "stretch" members of a group. For all GadgetSpec members, this
  221.                 means enlarging the actual hitbox of these gadgets (buttons
  222.                 with PLACETEXT_IN, for example). However, this is not always
  223.                 desirable. For example, if you want a string gadget to show
  224.                 exactly 20 characters, you can do this by setting ng_MinWidth
  225.                 to 20 and setting GS_NoWidthExtend in gs_Flags.
  226.  
  227.                 Note that CHECKBOX_KINDs automatically get both
  228.                 GS_NoWidthExtend and GS_NoHeightExtend set.
  229.  
  230.                 Also note that GETALT_KINDs extend only vertically.
  231.  
  232.                 GS_Localized
  233.  
  234.                     If this flag is set, the ng_GadgetText field is ignored
  235.                     and the localizer function will be called to supply the
  236.                     gadget label.
  237.  
  238.                         Note that GF_CreateGUIA() will fail if any of the
  239.                         GadgetSpecs in the layout tag list has this flag set,
  240.                         and you do not also supply a localizer function in your
  241.                         call to GF_CreateGUIA().
  242.                         See GF_CreateGUIA()/GUI_LocaleFunc for more info.
  243.  
  244.                 GS_BoldLabel
  245.  
  246.                     Specify this flag to have the label text of this gadget
  247.                     rendered in bold-face (e.g. to indicate a default
  248.                     response).
  249.  
  250.                 GS_DefaultTags
  251.  
  252.                     Specify this flag to allow GUIFront to supply some
  253.                     reasonable default tags to your gadget. Currently,
  254.                     default tags include the following:
  255.  
  256.                     All kinds:
  257.  
  258.                         GT_Underscore, '_'
  259.  
  260.                     CHECKBOX_KIND:
  261.  
  262.                         GTCB_Scaled, TRUE
  263.  
  264.                             The size of the checkbox is automatically
  265.                             calculated by GUIFront.
  266.  
  267.                     MX_KIND:
  268.  
  269.                         GTMX_Scaled, TRUE
  270.  
  271.                             The size of the radio buttons is automatically
  272.                             calculated by GUIFront.
  273.  
  274.                         GTMX_Spacing
  275.  
  276.                             GUIFront will supply a suitable value for the
  277.                             distance between individual radio buttons.
  278.                             This currently means 4 pixels in high resolution
  279.                             modes and 2 otherwise.
  280.  
  281.                     SCROLLER_KIND:
  282.  
  283.                         GTSC_Arrows
  284.  
  285.                             GUIFront automatically calculates how wide the
  286.                             scroller arrows should be based on the font being
  287.                             used. Note that to have SCROLLER_KINDs without
  288.                             arrows, either do not use GS_DefaultTags or suppy
  289.                             {GTSC_Arrows, 0} as a special indication telling
  290.                             GUIFront that you don't want the arrows.
  291.  
  292.                     PALETTE_KIND:
  293.  
  294.                         GTPA_IndicatorWidth,
  295.                         GTPA_IndicatorHeight,
  296.  
  297.                             GUIFront calculates an appropriately sized
  298.                             indicator box (V37.2) and places it to the
  299.                             left of the palette. Under V39+ indication
  300.                             works by framing the selected color, and so
  301.                             effectively ignores these tags. Note that
  302.                             GS_DefaultTags always supply these tags, even
  303.                             if you don't want an indicator. To create a
  304.                             PALETTE_KIND without an indicator, simply do
  305.                             not use GS_DefaultTags.
  306.  
  307.                         GTPA_Depth
  308.  
  309.                             Your palette kind will be set to the depth of
  310.                             the current default public screen.
  311.  
  312.         GadgetSpec.gs_Gadget (struct Gadget *) (read-only)
  313.  
  314.             This field will be set to the value returned by GadTools'
  315.             CreateGadget() function. You can use this in subsequent
  316.             calls GF_Set/GetGadgetAttrsA(), and for other non-GUIFront
  317.             functions which require the gadget pointer.
  318.  
  319.             Note: GUIFront stores a pointer to the GadgetSpec used to
  320.             create a gadget in the UserData field of the gadget, so do
  321.             not use this field (gadget->UserData) for private data.
  322. guifront.library/GF_CreateGUIAppA           guifront.library/GF_CreateGUIAppA
  323.  
  324.     NAME
  325.         GF_CreateGUIAppA - Create GUIFront application anchor structure (V37.2)
  326.         GF_CreateGUIApp  - Varargs stub for GF_CreateGUIAppA() (V37.2)
  327.  
  328.     SYNOPSIS
  329.         guifrontapp = GF_CreateGUIAppA(appid, tags)
  330.                                        A0     A1
  331.  
  332.         GUIFrontApp *GF_CreateGUIAppA(char *, struct Tagitem *);
  333.  
  334.         guifrontapp = GF_CreateGUIApp(appid, ...)
  335.  
  336.         GUIFrontApp *GF_CreateGUIApp(char *);
  337.  
  338.     FUNCTION
  339.         This function is used to allocate a GUIFront "anchor" structure for
  340.         use in subsequent calls to functions such as GF_CreateGUIA(), and
  341.         in order to give your application a symbolic name for use in the
  342.         GUIFront preferences program.
  343.  
  344.     INPUTS
  345.         appid - The symbolic name of your application. Must be less than
  346.                 50 characters. Must not be an empty string (""), and NULL
  347.                 is NOT allowed here either.
  348.  
  349.         tags  - Optional tags containing descriptive information about
  350.                 your application. Supported tags include:
  351.  
  352.                 (The GFA prefix is short for "GUIFront Application tag")
  353.                                               ¯  ¯     ¯
  354.                 GFA_Author (char *) Author name (max 70 characters)
  355.                     The author of this application (probably yourself)
  356.  
  357.                 GFA_Date (char *) Release date (max 14 characters)
  358.                     The date of release. The format itself is free, but
  359.                     it is suggested you use standard $VER: compatible
  360.                     date strings.
  361.  
  362.                 GFA_LongDesc (char *) Long desciption (max 70 characters)
  363.                     A longer description of this application. One line only,
  364.                     please.
  365.  
  366.                 GFA_Version (char *) Version information (max 20 characters)
  367.                     Version information pertaining to this release. The format
  368.                     is free. Note that GUIFront does not distinguish between
  369.                     two applications with the same id if they have different
  370.                     version numbers.
  371.  
  372.                 Note: The above four tags are initialized by the first
  373.                 GUIFront application to run with this AppID, and is then
  374.                 effectively ignored.
  375.  
  376.                 GFA_VisualUpdateSigBit (ULONG) Prefs change signal bit
  377.                     If you want to receive notification when the preferences
  378.                     pertaining to your application change, specify any
  379.                     value other than -1 here. When the preferences change,
  380.                     your task (or the one you specify with the
  381.                     GFA_VisualUpdateSigTask tag) will be signalled with the
  382.                     signal bit you specify here. Default is -1, no
  383.                     signalling. (V37.3)
  384.  
  385.                 GFA_VisualUpdateSigTask (struct Task *) Task to update
  386.                     Task to signal when preferences change. This tag is
  387.                     valid only in connection with GFA_VisualUpdateSigBit.
  388.                     Default is FindTask(0). (V37.3)
  389.  
  390.     BUGS
  391.         None known.
  392.  
  393.     SEE ALSO
  394.         DestroyGUIApp(), CreateGUIA()
  395. guifront.library/GF_DestroyGUIApp           guifront.library/GF_DestroyGUIApp
  396.  
  397.     NAME
  398.         GF_DestroyGUIApp - Free GUIFront anchor structure (V37.2)
  399.  
  400.     SYNOPSIS
  401.         GF_DestroyGUIApp(guifrontapp)
  402.                          A0
  403.  
  404.         void GF_DestroyGUI(GUIFrontApp *);
  405.  
  406.     FUNCTION
  407.         This function is used to free all resources currently in use by
  408.         your application. This means closing and destroying all GUIs and
  409.         deallocating the GUIFrontApp anchor structure itself. After this
  410.         function returns none of your GUIs should be referenced in any way,
  411.         nor should the anchor structure (it will point to garbage).
  412.  
  413.     INPUTS
  414.         guifrontapp - As returned by GF_CreateGUIAppA() (NULL is allowed)
  415.  
  416.     BUGS
  417.         None known.
  418.  
  419.     SEE ALSO
  420.         GF_CreateGUIAppA()
  421. guifront.library/GF_CreateGUIA                 guifront.library/GF_CreateGUIA
  422.  
  423.     NAME
  424.         GF_CreateGUIA - Create GadTools gadgets from layout tags (V37.2)
  425.         GF_CreateGUI  - Varargs stub for GF_CreateGUIA() (V37.2)
  426.  
  427.     SYNOPSIS
  428.         gui = GF_CreateGUIA(guifrontapp, layout_taglist, gadgetlist, controltags)
  429.         D0                    A0                 A1                 A2             A3
  430.  
  431.         GUIFront *GF_CreateGUIA(struct TagItem *, GadgetSpec **,
  432.                                 struct TagItem *);
  433.  
  434.         gui = GF_CreateGUI(guifrontapp, layout_taglist, gadgetlist, ...)
  435.  
  436.         GUIFront *GF_CreateGUI(struct TagItem *, GadgetSpec **, ...);
  437.  
  438.     FUNCTION
  439.         This is the main layout function of GUIFront.  It accepts an array
  440.         of layout tags from which it calculates not only usable gadget
  441.         coordinates, but also a complete gadget context list for use directly
  442.         with the WA_Gadgets tag in OpenWindowTagList().  This allows you to
  443.         create fully font sensitive GUIs with a minimum of efford.
  444.  
  445.         This function is extremely versatile. Not only will it layout the GUI,
  446.         it will also supply new-style gadget label underscoring (as seen in
  447.         utilities such as Spot (Nico François), GadToolsBox (Jan van den Baard)
  448.         and PowerCache (by yours truly ;-), do automatic backfilling and
  449.         group framing, as well as process shift-cancellable hotkeys through
  450.         a few simple GadTools replacement functions (see GF_GetIMsg() and
  451.         GF_ReplyIMsg())
  452.  
  453.     INPUTS
  454.         guifrontapp - GUIFrontApp anchor structure to attach this GUI
  455.                       to (see GF_CreateGUIAppA())
  456.  
  457.         gadgetlist - Pointer to NULL terminated array of pointers to
  458.                      all GadgetSpecs referenced in layout_list.
  459.                      References to GadgetSpecs not present in this
  460.                      list will make GF_CreateGUIA() fail.
  461.  
  462.         layout_taglist - Layout tag list
  463.  
  464.             Pointer to array of Tag Items, which fully describes
  465.             the entire gadget layout.
  466.  
  467.             Layout tags include:
  468.  
  469.             (The GUIL prefix is short for "GUI Layout list")
  470.                                            ¯¯¯ ¯
  471.             GUIL_VertGroup, (ULONG spacing) - begin a vertical group
  472.  
  473.                 Initiates a new vertical group. The various elements in this
  474.                 group (GadgetSpecs or other groups) will be seperated by
  475.                 'spacing' quantum units of space.  Note: Make sure each
  476.                 GUIL_VertGroup has a matching TAG_END!
  477.  
  478.             GUIL_HorizGroup, (ULONG spacing) - begin a horizontal group
  479.  
  480.                 Initiates a new horizontal group. The various elements in
  481.                 this group (GadgetSpecs or other groups) will be seperated
  482.                 by 'spacing' quantum units of space.  Note:  Make sure
  483.                 each GUIL_HorizGroup has a matching TAG_END!
  484.  
  485.             GUIL_GadgetSpecID, (ULONG id) - add gadget to current group
  486.  
  487.                 Add a gadget to the current group.  'id' must match the
  488.                 GadgetID field of one of the GadgetSpecs supplied in
  489.                 'gadgetlist'.  Each GadgetSpec may be used only once in
  490.                 the layout tag list.
  491.  
  492.             GUIL_Flags, (ULONG) - miscellaneous layout control bits
  493.  
  494.                 This flag controls various aspects of the current group.
  495.                 Currently, the following bits are supported:
  496.  
  497.                 Group extension bits (all mutually exclusive):
  498.                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  499.                 These flags control how members in a group extend as the
  500.                 group itself expands, to match ajacent groups in length or
  501.                 height:
  502.  
  503.                 GUILF_PropShare
  504.  
  505.                     Members in groups which have this extension attribute
  506.                     maintain their relative size as the group expands:
  507.  
  508.                        33%          66%
  509.                     [ Short ] [ Very, very long ]
  510.                     <------- Group width ------->
  511.  
  512.                          33%                66%
  513.                     [   Short   ] [    Very very long   ]
  514.                     <------------ Group width ---------->
  515.  
  516.                     Turn the monitor 90° and you'll have the same
  517.                     illustration for vertical groups.
  518.  
  519.                 GUILF_EqualShare
  520.  
  521.                     With this extension attribute, members are given exactly
  522.                     the same share of the group:
  523.  
  524.                        40%         60%
  525.                     [ Short ] [ Much longer ]
  526.                     <----- Group width ----->
  527.  
  528.                             50%                    50%
  529.                     [      Short      ] [   Much longer   ]
  530.                     <------------- Group width ----------->
  531.  
  532.                     Turn the monitor 90° and you'll have the same
  533.                     illustration for vertical groups.
  534.  
  535.                 GUILF_EqualSize
  536.  
  537.                     This extension attribute makes each member equally big,
  538.                     and then simply increases the space between members to
  539.                     match the size of the group:
  540.  
  541.                      50 pix        98 pix
  542.                     [ Short ] [ Much longer ]
  543.                     <----- Group width ----->
  544.  
  545.                         98 pix                   98 pix
  546.                     [    Short    ]        [ Much longer ]
  547.                     <------------- Group width ---------->
  548.  
  549.                     Turn the monitor 90° and you'll have the same
  550.                     illustration for vertical groups.
  551.  
  552.                 Other flags (all combinations are valid):
  553.                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  554.                 GUILF_EqualWidth or GUILF_EqualHeight
  555.  
  556.                     This forces all members of a group to be stretched to
  557.                     equal size in the secondary dimension, as illustrated
  558.                     in this vertical group:
  559.  
  560.                     +----+              +--------+
  561.                     | Ab |              |   Ab   |
  562.                     +----+       ===\   +--------+
  563.                     +--------+   ===/   +--------+
  564.                     | Abcdef |          | Abcdef |
  565.                     +--------+          +--------+
  566.                                    With GUILF_EqualWidth
  567.  
  568.                     Turn the monitor 90° and you'll have the same
  569.                     illustration for horizontal groups.
  570.  
  571.                 GUILF_LabelAlign
  572.  
  573.                     This is a special alignment tag, which is only allowed
  574.                     in vertical groups. It causes gadgets to be vertically
  575.                     aligned by their hitboxes in stead of their labels:
  576.  
  577.                     Text: [········]                 Text: [········]
  578.                     Long text: [···]            Long text: [···]
  579.  
  580.                          Normal                 With GUILF_LabelAlign
  581.  
  582.                     Combining GUILF_LabelAlign and GUILF_EqualWidth gives
  583.                     the following rather pleasing result:
  584.  
  585.                          Text: [········]
  586.                     Long text: [········]
  587.  
  588.                 The default for GUIL_Flags is (GUILF_PropShare |
  589.                 GUILF_EqualHeight).
  590.  
  591.                 Note:  If you specify GUIL_Flags without specifying a group
  592.                 extension   mode   (GUIL_PropShare  or  GUIL_EqualShare  or
  593.                 GUIL_EqualSize), it will default to GUIL_PropShare. (V37.3)
  594.  
  595.             GUIL_FrameType (ULONG frametype)
  596.  
  597.                 GUIFront allows you to frame any group.  To enable
  598.                 framing, specify any of the following frame types for the
  599.                 current group:
  600.  
  601.                     GUILFT_Normal - A raised bevelbox (*)
  602.                     GUILFT_Recess - A recessed bevelbox (*)
  603.                     GUILFT_Ridge  - Ridge frame
  604.  
  605.                     (*) - If you are using backfilling for this GUI
  606.                           (see GUI_Backfill below), the interor of
  607.                           these frame kinds will be cleared to allow
  608.                           display on top of a background pattern.
  609.  
  610.             GUIL_FrameHeadline (char *)
  611.  
  612.                 This tag allows you to put a "title" on a frame.  It is
  613.                 used mostly with GUILFT_Ridge, but is also valid for other
  614.                 frame kinds.  Note:  If the current group turns out to be
  615.                 too short to display the entire frame headline, it will
  616.                 not be shown at all (truncation is ugly :-)
  617.  
  618.         controltags - Miscellaneous control tags
  619.  
  620.             Currently supported tags include:
  621.  
  622.             GUI_InitialOrientation (ULONG) - Initial group layout orientation
  623.  
  624.                 This tag defines the initial layout group orientation.
  625.                 It must be either GUIL_VertGroup or GUIL_HorizGroup (default).
  626.  
  627.                 Example:
  628.  
  629.                 ULONG tags[] =
  630.                 {
  631.                     GUIL_GadgetSpecID, GID_OK,
  632.                     GUIL_GadgetSpecID, GID_CANCEL,
  633.                     GUIL_HorizGroup, 1,
  634.                         ...
  635.                     TAG_DONE
  636.                 };
  637.  
  638.                 With GUI_InitialOrientation set to GUIL_VertGroup:
  639.  
  640.                 [ ok ]
  641.                 [ cancel ]
  642.                 (horizgroup here)
  643.  
  644.                 With GUI_InitialOrientation set to GUIL_HorizGroup:
  645.  
  646.                 [ ok ] [ cancel ] (horizgroup here)
  647.  
  648.                 See also GUI_InitialSpacing below.
  649.  
  650.             GUI_InitialSpacing (ULONG) - Initial inter-group spacing
  651.                 Defines the initial group spacing of the layout tag list.
  652.                 The value itself is in terms of "spacing quantum units",
  653.                 which is something GUIFront figures out by itself.
  654.                 Default is 1.
  655.  
  656.             GUI_Backfill (BOOL) - Enable backfilling
  657.                 If you supply a non-null value for this tag, your window
  658.                 will be backfilled with the current preference backfilling
  659.                 pattern, as defined by the user.  Backfilling typically
  660.                 requires that the outermost group is [recess] framed, so
  661.                 that gadgets and their labels are not rendered directly on
  662.                 top of the backfilling (which looks pretty strange :-).
  663.  
  664.             GUI_NewMenu (struct NewMenu *) - Attach menu
  665.                 Attaches a menu strip to this GUI.
  666.  
  667.             GUI_NewMenuLoc (struct NewMenu *) - Attach localized menu
  668.                 Like GUI_NewMenu, this tag is used to attach a menu strip to
  669.                 the GUI. However, this tag also calls your localizer function
  670.                 once for each item in the NewMenu array, allowing you to
  671.                 supply a localized menu item or title string.
  672.                 See GUI_LocaleFunc for information on the localizer hook,
  673.                 and how it is called for NewMenus.
  674.  
  675.             GUI_UserData (ULONG) - User data area
  676.                 This tag allows you to attach a custom value to each GUI.
  677.  
  678.                 To make message handling for multi-window applications
  679.                 easier, you can use this area to store a pointer to a
  680.                 function dispatcher to call for messages pertaining to this
  681.                 GUI.  In your main message event handling loop, you can then
  682.                 use the following technique to conveniently dispatch incoming
  683.                 IntuiMessages:
  684.  
  685.                 -------------------------------------------------------------
  686.                 GUIFront *a = GF_CreateGUI(....);
  687.                 GUIFront *b = GF_CreateGUI(....);
  688.  
  689.                 GF_SetGUIAttrs(a, GUI_UserData, myfirstdispatchfunc,...);
  690.                 GF_SetGUIAttrs(b, GUI_UserData, myseconddispatchfunc,...);
  691.  
  692.                 while (imsg = GF_GetIMsg(myguifrontapp))
  693.                 {
  694.                    void (*thisdispatcher)(struct IntuiMessage *);
  695.                    GUIFront *thisgui;
  696.  
  697.                    /* Pay attention here! GUIFront always stores a pointer to
  698.                     * the GUIFront being used for a window in the UserData
  699.                     * field of that window. Here's how to retrieve it:
  700.                     */
  701.  
  702.                    thisgui = imsg->IDCMPWindow->UserData;
  703.  
  704.                    /* The only alternative method of determining which of
  705.                     * your GUI's `thisgui' is, is to compare it with each
  706.                     * of your (global) gui pointers until you get a match.
  707.                     * But this way is MUCH easier :-)
  708.                     */
  709.  
  710.                    GF_GetGUIAttrs(thisgui, GUI_UserData, &thisdispatcher, ..);
  711.  
  712.                    (*thisgui)(imsg);
  713.  
  714.                    GF_ReplyIMsg(imsg);
  715.                 }
  716.                 -------------------------------------------------------------
  717.  
  718.                 Note however that GUIFront does not require or expect you to
  719.                 use GUI_UserData in this particular way, so you are of course
  720.                 free to store any value you want in this field.
  721.  
  722.             GUI_OpenGUI (BOOL)
  723.  
  724.                 Supply a non-null value to have GUIFront attempt to open the
  725.                 GUI (in a window, obviously).  GUIFront works out the
  726.                 necessary IDCMP- and window flags.  See GUI_ExtraIDCMP.
  727.  
  728.             GUI_WindowTitle, (char *)
  729.  
  730.                 The desired title of the window for this GUI.
  731.  
  732.             GUI_ScreenTitle (char *) (V37.3)
  733.  
  734.                 The desired title of the screen when this GUI is active.
  735.  
  736.             GUI_LeftEdge (short) (V37.3)
  737.  
  738.                 The desired left edge of the GUI (once it opens). This
  739.                 tag is mainly used to be able to recreate and open a GUI
  740.                 at the same position it was at when it was closed.
  741.                 Default is -1, which means "center under the mouse".
  742.  
  743.             GUI_TopEdge (short) (V37.3)
  744.  
  745.                 The desired top edge of the GUI (once it opens). This
  746.                 tag is mainly used to be able to recreate and open a GUI
  747.                 at the same position it was at when it was closed.
  748.                 Default is -1, which means "center under the mouse".
  749.  
  750.             GUI_ExtraIDCMP, (ULONG)
  751.  
  752.                 GUIFront normally calculates suitable IDCMP flags for your
  753.                 window, but there are cases where these flags are
  754.                 insufficient for your application.  For example, if you want
  755.                 notification on disk insertions, you would supply
  756.                 IDCMP_DISKINSERTED in GUI_ExtraIDCMP.
  757.  
  758.             GUI_ExtendedError (ExtErrorData *) - Extended error reporting
  759.  
  760.                 If for some reason GF_CreateGUIA() fails, it simply returns a
  761.                 plain NULL.  This makes tracking down layout errors rather
  762.                 difficult, so this tag has been provided to give you a better
  763.                 clue as to why the layout fails.  Currently, the following
  764.                 error codes are returned in ExtErrorData.ee_ErrorCode:
  765.  
  766.                 (The GFERR prefix is short for "GUIFront Error")
  767.                                                 ¯  ¯     ¯¯¯
  768.                 GFERR_UNKNOWN
  769.  
  770.                     Some unknown error occurred.
  771.  
  772.                 GFERR_NOT_ENOUGH_MEMORY
  773.  
  774.                     The layout engine ran out of memory.
  775.  
  776.                 GFERR_MISSING_LOCALIZER
  777.  
  778.                     A localized GadgetSpec was found (flags & GS_Localized),
  779.                     but no localizer hook was provided (see GUI_LocaleFunc).
  780.  
  781.                     ExtErrorData.ee_ErrorData will contain a pointer to the
  782.                     offending GadgetSpec.
  783.  
  784.                 GFERR_GUI_TOO_WIDE
  785.  
  786.                     The resulting layout was too wide to open, even when
  787.                     falling back to topaz/8. The width, as computed by
  788.                     GUIFront, will be stored in ExtErrorData.ee_ErrorData
  789.                     for further scrutiny.
  790.  
  791.                 GFERR_GUI_TOO_TALL
  792.  
  793.                     The resulting layout was too tall to open, even when
  794.                     falling back to topaz/8. The height, as computed by
  795.                     GUIFront, will be stored in ExtErrorData.ee_ErrorData
  796.                     for further scrutiny.
  797.  
  798.                 GFERR_CANT_FIND_SCREEN
  799.  
  800.                     The layout engine could not locate the default public
  801.                     screen (which probably means your system is in big
  802.                     trouble at the moment)
  803.  
  804.                 GFERR_CANT_FIND_GADGETSPECID
  805.  
  806.                     A GadgetSpec with some GadgetID was referenced in the
  807.                     layout tag list, but not found in the supplied gadgetlist
  808.                     (see description of input parameter `gadgetlist'). The
  809.                     offending GadgetID will be stored in
  810.                     ExtErrorData.ee_ErrorData.
  811.  
  812.                 GFERR_UNKNOWN_LAYOUT_TAG
  813.  
  814.                     The layout tag list is incorrectly formatted, or contains
  815.                     garbage. Most likely you're missing a TAG_DONE somewhere.
  816.                     The offending tag value will be stored in
  817.                     ExtErrorData.ee_ErrorData.
  818.  
  819.                 GFERR_CANT_OPEN_WINDOW
  820.  
  821.                     This error is returned if {GUI_OpenGUI,TRUE} was specified,
  822.                     but the window could not be opened. The most likely cause of
  823.                     failure is low memory.
  824.  
  825.                 GFERR_CANT_CREATE_MENUS
  826.  
  827.                     GUIFront was unable to Create and Layout the NewMenu
  828.                     supplied by you with GUI_NewMenu.
  829.  
  830.             GUI_LocaleFunc ( struct Hook * )
  831.  
  832.                 If any of the GadgetSpec structures in the layout control
  833.                 taglist has its GS_Localized flag set (see --structures--),
  834.                 you are _required_ to supply a corresponding localizer
  835.                 function, or GF_CreateGUIA() will fail.
  836.  
  837.                 The hook will be called with the following message:
  838.  
  839.                 LocaleHookMsg (defined in include/guifront.h)
  840.                 {
  841.                     UWORD lhm_Kind :
  842.  
  843.                         This field indicates what kind of data GUIFront wants
  844.                         you to localize. More precisely, it indicates which
  845.                         field in the embedded union is valid:
  846.  
  847.                         LHMK_StringID means lhmd_StringID is valid
  848.                         LHMK_GadgetSpec means lhmd_GadgetSpec is valid
  849.                         LHMK_NewMenu means lhmd_NewMenu is valid
  850.  
  851.                     union (lhm_Data)
  852.                     {
  853.                         ULONG lhmd_StringID :
  854.  
  855.                             Return the catalog string with this id.
  856.  
  857.                         GadgetSpec *lhmd_GadgetSpec :
  858.  
  859.                             Return a localized string for the label of this
  860.                             GadgetSpec. Note: If this GadgetSpec is a
  861.                             CYCLE_KIND or MX_KIND, your localizer may be
  862.                             called several times in order to localize the
  863.                             individual cycle or mx items. GUIFront does this
  864.                             by calling your localizer once for each item to
  865.                             localize, with lhm_Kind == LHMK_StringID and
  866.                             values from the initial string array in
  867.                             lhmd_StringID. For example, consider the following
  868.                             CYCLE_KIND gadget:
  869.  
  870.                             -------------------------------------------------
  871.                             STRPTR mycyclelabels[] =
  872.                             {
  873.                                 (STRPTR) CATID_MyCycItem1,
  874.                                 (STRPTR) CATID_MyCycItem2,
  875.                                 (STRPTR) CATID_MyCycItem3,
  876.                                 NULL
  877.                             };
  878.  
  879.                             struct TagItem mycycletags[] =
  880.                             {
  881.                                 GTCY_Labels, myccylelabels,
  882.                                 TAG_DONE
  883.                             };
  884.  
  885.                             GadgetSpec myccyle =
  886.                             {
  887.                                 CYCLE_KIND, {0,0,0,0, CATID_MyMode, NULL,
  888.                                              GID_MYCYCLE, PLACETEXT_LEFT},
  889.                                 mycycletags,
  890.                                 GS_DefaultTags | GS_Localized
  891.                             };
  892.                             -------------------------------------------------
  893.  
  894.                             During the call to GF_CreateGUIA(), your localizer
  895.                             will be called four times for this gadget:
  896.  
  897.                             lhm_Kind          lhm_Data
  898.                             -----------------------------------------------------
  899.                             LHMK_GadgetSpec   lhmd_GadgeSpec == &mycycle
  900.                             LHMK_StringID     lhmd_StringID == CATID_MyCycItem1
  901.                             LHMK_StringID     lhmd_StringID == CATID_MyCycItem2
  902.                             LHMK_StringID     lhmd_StringID == CATID_MyCycItem3
  903.  
  904.                         struct NewMenu *lhmd_NewMenu :
  905.  
  906.                             Return a localized string for this
  907.                             NewMenu. You are expected to return
  908.                             a string with the following format:
  909.  
  910.                             "\0Label":
  911.                                 Menu label is "Label", no shortcut
  912.                             "LLabel":
  913.                                 Menu label is "Label", shortcut is '<amiga>L'
  914.                             "~f1\0Label"
  915.                                 Menu label is "Label", shortcut is 'f1'.
  916.                                 Note that extended shortcuts are only
  917.                                 available under V39+
  918.                     } lhm_Data
  919.  
  920.                 GUIFront will supply a pointer to the current GUIFront in the
  921.                 object field when calls your hook (In other words, GUIFront
  922.                 does a CallHookPkt(yourHook, &thisGUIFront, &localehookmsg);)
  923.  
  924.     RESULT
  925.  
  926.         Returns pointer to a GUIFront anchor structure for this GUI if
  927.         everything was successfully created, or NULL on error (typically
  928.         not enough memory). Use GUI_ExtendedError to obtain a more
  929.         precise specification of the nature of the error which occurred.
  930.  
  931.     NOTES
  932.  
  933.         If the resulting GUI is too large to fit on the screen the routine
  934.         will try topaz/8 before failing entirely.
  935.  
  936.         Note that this function is relatively slow. If your application is
  937.         one which opens and closes its GUI several times during its lifetime,
  938.         call this function only once, and then use GF_SetGUIAttrA() to
  939.         open and close the GUI (see GUI_OpenGUI).
  940.  
  941.     EXAMPLE
  942.  
  943.         The following is an bare-bone example illustrating what a layout
  944.         tag list looks like. Note the terminating TAG_DONE!
  945.  
  946.         ULONG mytags[] =
  947.         {
  948.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  949.  
  950.             GUIL_VertGroup, 1,
  951.                 GUIL_Flags, GUILF_EqualWidth | GUILF_PropShare,
  952.                 GUIL_FrameType, GUILFT_Ridge,
  953.                 GUIL_FrameHeadline, "User Data",
  954.                 GUIL_GadgetSpecID, GID_NAMESTR,
  955.                 GUIL_GadgetSpecID, GID_ADDRESSSTR,
  956.             TAG_END,
  957.  
  958.             GUIL_HorizGroup, 1,
  959.                 GUIL_Flags, GUILF_EqualHeight | GUILF_EqualSize,
  960.                 GUIL_GadgetSpecID, GID_OKAY,
  961.                 GUIL_GadgetSpecID, GID_CANCEL,
  962.             TAG_DONE,
  963.  
  964.             TAG_DONE  /* <-- VERY important! */
  965.         }
  966.  
  967.         For further examples on how to use this function, please consult
  968.         the example source code included in this distribution.
  969.  
  970.     BUGS
  971.         None known (yeah, right).
  972.  
  973.     SEE ALSO
  974.         GF_DestroyGUI()
  975. guifront.library/GF_DestroyGUI                 guifront.library/GF_DestroyGUI
  976.  
  977.     NAME
  978.         GF_DestroyGUI - Free all resources obtained by GF_CreateGUIA() (V37.2)
  979.  
  980.     SYNOPSIS
  981.         GF_DestroyGUI(guifront)
  982.                       A0
  983.  
  984.         void GF_DestroyGUI(GUIFront *);
  985.  
  986.     FUNCTION
  987.         This function releases all resources obtained in a successful call to
  988.         GF_CreateGUIA(). This includes freeing various gadgets and BOOPSI
  989.         objects. If your GUI is open when you call this function
  990.         (GUI_OpenGUI == TRUE), it will be closed.
  991.  
  992.     INPUTS
  993.         guifront - As returned by GF_CreateGUIA() (NULL is allowed)
  994.  
  995.     BUGS
  996.         None known.
  997.  
  998.     SEE ALSO
  999.         GF_CreateGUIA()
  1000. guifront.library/GF_GetGUIAttrA               guifront.library/GF_GetGUIAttrA
  1001.  
  1002.     NAME
  1003.         GF_GetGUIAttrA - Obtain GUI info (V37.2)
  1004.         GF_GetGUIAttr  - Varargs stub for GF_GetGUIAttrA() (V37.2)
  1005.  
  1006.     SYNOPSIS
  1007.         tagsfilled = GF_GetGUIAttrA(guifront,taglist)
  1008.         D0                          A0       A1
  1009.  
  1010.         ULONG GF_GetGUIAttrA(GUIFront *,struct TagItem *);
  1011.  
  1012.         tagsfilled = GF_GetGUIAttr(guifront,...);
  1013.  
  1014.         ULONG GF_GetGUIAttr(GUIFront *, ...);
  1015.  
  1016.     FUNCTION
  1017.         Generic Get... function used to obtain information about a GUI.
  1018.         This is the only supported way of reading data from the GUIFront
  1019.         structure. Do not poke directly into the GUIFront stucture, or
  1020.         your application may break under a future version of the library.
  1021.  
  1022.         See TAGS for a list of supported tags.
  1023.  
  1024.     INPUTS
  1025.         guifront - As returned by CreateGUIA()
  1026.         taglist   - pointer to a tag list which controls this function
  1027.  
  1028.     TAGS
  1029.         GUI_UserData - (ULONG *) User data
  1030.             Returns whatever value you poked into the UserData field in the
  1031.             GUIFront structure (see GF_SetGUIAttrA()).
  1032.         GUI_Window - (struct Window *) Pointer to GUI window
  1033.             Returns the current Intuition Window pointer for this GUI. If the
  1034.             GUI window is not currently open, NULL is returned.
  1035.         GUI_ActualFont - (struct TextAttr *) Copy of current TextAttr
  1036.             Returns a copy of the TextAttr which was actually used for
  1037.             the gadgets of the GUI. Useful if you need to manually Text()
  1038.             in some characters in the same font as the GUI is actually
  1039.             using. (V37.3)
  1040.         GUI_MenuStrip - (struct Menu *) Pointer to menu strip
  1041.             Returns the menu strip associated with this GUI (or NULL if no
  1042.             menu strip is currently attached). You can use this tag to
  1043.             temporarily remove the menu of GUI (ClearMenuStrip()).
  1044.         GUI_OpenGUI (BOOL) - Window open flag
  1045.             Returns TRUE if your GUI window is currently open, and FALSE
  1046.             otherwise.
  1047.         GUI_LeftEdge (short *) - Left edge of GUI window
  1048.             Returns the current left edge of the GUI window. You could
  1049.             obtain the same info by peeking in the Window structure (see
  1050.             GUI_Window), but this way is easier in some cases.
  1051.             Note that if the GUI is not currently open, this tag is
  1052.             ignored. (V37.3)
  1053.         GUI_TopEdge (short *) - Top edge of GUI window
  1054.             Returns the current top edge of the GUI window. You could
  1055.             obtain the same info by peeking in the Window structure (see
  1056.             GUI_Window), but this way is easier in many cases.
  1057.             Note that if the GUI is not currently open, this tag is
  1058.             ignored. (V37.3)
  1059.  
  1060.     RESULT
  1061.         Returns number of tag items which were actually filled.
  1062.  
  1063.     BUGS
  1064.         None known.
  1065.  
  1066.     SEE ALSO
  1067.         GF_SetGUIAttrA()
  1068. guifront.library/GF_SetGUIAttrA               guifront.library/GF_SetGUIAttrA
  1069.  
  1070.     NAME
  1071.         GF_SetGUIAttrA - Set GUI data (V37.2)
  1072.         GF_SetGUIAttr  - Varargs stub for GF_SetGUIAttrA() (V37.2)
  1073.  
  1074.     SYNOPSIS
  1075.         tagsset = GF_SetGUIAttrA(guifront,taglist)
  1076.         D0                       A0       A1
  1077.  
  1078.         ULONG GF_SetGUIAttrA(GUIFront *,struct TagItem *);
  1079.  
  1080.         tagsset = GF_SetGUIAttr(guifront, ...)
  1081.  
  1082.         ULONG GF_SetGUIAttr(GUIFront *, ...);
  1083.  
  1084.     FUNCTION
  1085.         Generic Set... function used to modify GUI attributes.
  1086.         This is the only supported way of modifying the GUI structure.
  1087.         Do not poke directly into the GUIFront stucture, or your
  1088.         application may break under a future version of the library.
  1089.  
  1090.         See TAGS for a list of supported tags.
  1091.  
  1092.     INPUTS
  1093.         guifront - As returned by CreateGUIA()
  1094.         taglist   - pointer to a tag list which controls this function
  1095.  
  1096.     TAGS
  1097.         GUI_UserData (ULONG) - User data
  1098.             You may store any value here.
  1099.         GUI_ExtraIDCMP (ULONG) - Extra IDCMP flags
  1100.             This tag can be used to temporarily change the IDCMP intuition
  1101.             flags for your GUI. This is useful if your application suddenly
  1102.             needs to listen to events such as IDCMP_DISKINSERTED. To unlisten
  1103.             for IDCMP_DISKINSERTED evens again, call this function with
  1104.             {GUI_ExtraIDCMP, 0}.
  1105.         GUI_OpenGUI (BOOL) - Open and close the GUI window
  1106.             This tag controls the state of your GUI. Specifying a nonzero
  1107.             value will open your GUI (if it isn't already open), and
  1108.             specifying a value of zero closes the GUI (if it isn't already
  1109.             closed). As of V37.3 a GUI will reopen at the position it was
  1110.             at when it was last closed (as opposed to always opening under
  1111.             the mouse pointer).
  1112.         GUI_LeftEdge (short) - left edge of GUI (V37.3)
  1113.             The desired left edge of the GUI. In this context this tag is
  1114.             used in connection with GUI_OpenGUI to explicitly position a GUI
  1115.             under the mouse pointer in stead of at the position at which it
  1116.             was last open. Specify a value of -1 to (horisontally) place the
  1117.             GUI under the mouse pointer.
  1118.             Note: This tag has no effect if the GUI is already open (not until
  1119.             your GUI is re-opened, anyway).
  1120.         GUI_TopEdge (short) - top edge of GUI (V37.3)
  1121.             The desired top edge of the GUI. In this context this tag is
  1122.             used in connection with GUI_OpenGUI to explicitly position a GUI
  1123.             under the mouse pointer in stead of at the position at which it
  1124.             was last open. Specify a value of -1 to (vertically) place the
  1125.             GUI under the mouse pointer.
  1126.             Note: This tag has no effect if the GUI is already open (not until
  1127.             your GUI is re-opened, anyway).
  1128.  
  1129.     RESULT
  1130.         Returns number of tags which were actually set.
  1131.  
  1132.     BUGS
  1133.         None known.
  1134.  
  1135.     SEE ALSO
  1136.         GF_GetGUIAttrA()
  1137. guifront.library/GF_GetGUIAppAttrA         guifront.library/GF_GetGUIAppAttrA
  1138.  
  1139.     NAME
  1140.         GF_GetGUIAppAttrA - Obtain GUI application info (V37.2)
  1141.         GF_GetGUIAppAttr  - Varargs stub for GF_GetGUIAppAttrA() (V37.2)
  1142.  
  1143.     SYNOPSIS
  1144.         tagsfilled = GF_GetGUIAppAttrA(guifrontapp,taglist)
  1145.         D0                               A0           A1
  1146.  
  1147.         ULONG GF_GetGUIAppAttrA(GUIFrontApp *,struct TagItem *);
  1148.  
  1149.         tagsfilled = GF_GetGUIAppAttr(guifrontapp, ...)
  1150.  
  1151.         ULONG GF_GetGUIAppAttr(GUIFrontApp *, ...);
  1152.  
  1153.     FUNCTION
  1154.         Generic Get... function for use with the application anchor structure.
  1155.         This is the only supported way of reading data from the GUIFrontApp
  1156.         structure. Do not poke directly into the GUIFrontApp stucture, or your
  1157.         application may break under a future version of the library.
  1158.         See TAGS for a list of supported tags.
  1159.  
  1160.     INPUTS
  1161.         guifrontapp - As returned by CreateGUIApp()
  1162.         taglist     - pointer to a tag list which controls this function
  1163.                       (See TAGS below for a description of supported tags)
  1164.  
  1165.     TAGS
  1166.         GUIA_UserData - (ULONG *) User data
  1167.             Returns whatever value you poked into the UserData field of the
  1168.             GUIFrontApp structure (see GF_SetGUIAppAttrA()).
  1169.         GUIA_WindowPort - (struct MsgPort *) Window port
  1170.             Returns a pointer to the message port used by GUIFront to control
  1171.             your windows. Note that all GUIs share the same message port. Also
  1172.             note that reading messages directly from this port is illegal (use
  1173.             GF_GetIMsg() in stead).
  1174.  
  1175.     RESULT
  1176.         Returns number of tag items which were actually filled.
  1177.  
  1178.     BUGS
  1179.         None known.
  1180.  
  1181.     SEE ALSO
  1182.         GF_SetGUIAppAttrA(), GF_GetIMsg()
  1183. guifront.library/GF_SetGUIAppAttrA         guifront.library/GF_GetGUIAppAttrA
  1184.  
  1185.     NAME
  1186.         GF_SetGUIAppAttrA - Set application anchor data (V37.2)
  1187.         GF_SetGUIAppAttr  - Varargs stub for GF_SetGUIAppAttrA() (V37.2)
  1188.  
  1189.     SYNOPSIS
  1190.         tagsset = GF_SetGUIAppAttrA(guifrontapp,taglist)
  1191.         D0                            A0                A1
  1192.  
  1193.         ULONG GF_SetGUIAppAttrA(GUIFrontApp *,struct TagItem *);
  1194.  
  1195.         tagsset = GF_SetGUIAppAttr(guifrontapp, ...)
  1196.  
  1197.         ULONG GF_SetGUIAppAttr(GUIFrontApp *, ...);
  1198.  
  1199.     FUNCTION
  1200.         Generic Set... function used to modify attributes pertaining to
  1201.         the application anchor structure.This is the only supported way of
  1202.         modifying the GUIFrontApp structure. Poking directly into the
  1203.         GUIFrontApp stucture may break your application under future
  1204.         revisions of the library.
  1205.  
  1206.         See TAGS for a list of supported tags.
  1207.  
  1208.     INPUTS
  1209.         guifrontapp - As returned by CreateGUIApp()
  1210.         taglist     - pointer to a tag list which controls this function
  1211.  
  1212.     TAGS
  1213.         GUIA_UserData - (ULONG) User data
  1214.             You may store any value here.
  1215.  
  1216.     RESULT
  1217.         Returns number of tags which were actually set.
  1218.  
  1219.     BUGS
  1220.         None known.
  1221.  
  1222.     SEE ALSO
  1223.         GF_GetGUIAppAttrA()
  1224. guifront.library/GF_GetIMsg                       guifront.library/GF_GetIMsg
  1225.  
  1226.     NAME
  1227.         GF_GetIMsg - Replacement call for GadTools' GT_GetIMsg() (V37.2)
  1228.  
  1229.     SYNOPSIS
  1230.         intuimessage = GF_GetIMsg(guifrontapp)
  1231.         D0                        A0
  1232.  
  1233.         struct IntuiMessage *GF_GetIMsg(GUIFrontApp *);
  1234.  
  1235.     FUNCTION
  1236.         Obtain a message from intuition and perform automatic hotkey handling
  1237.         of all gadgets in the associated window (GUI).
  1238.  
  1239.         This function first calls GadTools' own GT_GetIMsg. It then examines
  1240.         the result for possible keypresses. If it detects a keypress which
  1241.         matches one of the hotkeys used in this GUI, it automatically calls
  1242.         the appropriate gadget activation routine. It also completely handles
  1243.         shift-cancellable button gadgets.
  1244.  
  1245.     INPUTS
  1246.         guifrontapp - The GUIFront application anchor structure, as obtained
  1247.                       with GF_CreateGUIAppA(). Note that you will be getting
  1248.                       messages from every open GUI currently connected to this
  1249.                       application. To find out which GUI a certain message
  1250.                       belongs to, examine imsg->IDCMPWindow->UserData to obtain
  1251.                       a pointer to the corresponding GUIFront structure.
  1252.  
  1253.     RESULT
  1254.         Returns pointer to intution message, or NULL if no more messages
  1255.         are available.
  1256.  
  1257.     NOTES
  1258.         This is a replacement call for GadTools' GT_GetIMsg(). If you want
  1259.         automatic hotkey processing, you must use this replacement call.
  1260.         On second thought, forget about using GT_GetIMsg() altogether. If you
  1261.         do, and if the user has selected to use simple window refreshing for
  1262.         your application, your windows won't be properly refreshed.
  1263.  
  1264.     BUGS
  1265.         None known.
  1266.  
  1267.     SEE ALSO
  1268.         gadtools.library/GT_GetIMsg(), exec.library/ReplyMsg()
  1269. guifront.library/GF_Wait                             guifront.library/GF_Wait
  1270.  
  1271.     NAME
  1272.         GF_Wait - Replacement call for exec's Wait() (V37.2)
  1273.  
  1274.     SYNOPSIS
  1275.         signals = GF_Wait(guifrontapp, othersignals);
  1276.                           A0           D0
  1277.  
  1278.         ULONG GF_Wait(GUIFrontApp *, ULONG);
  1279.  
  1280.     FUNCTION
  1281.         This function waits for a message to arrive at the window port of
  1282.         your application, or for one of the supplied signals to become set.
  1283.  
  1284.     INPUTS
  1285.         guifrontapp  - The GUIFront application anchor structure, as obtained
  1286.                        with GF_CreateGUIAppA(). Note that you will be getting
  1287.                        signals for events from every open GUI currently
  1288.                        connected to this application.
  1289.  
  1290.         othersignals - Alternative signals to cause GF_Wait() to return
  1291.  
  1292.     RESULT
  1293.         Returns signals which became set (several may be set when this
  1294.         function returns)
  1295.  
  1296.     NOTES
  1297.         This function will block your application until one of the signals
  1298.         occur. If for some reason this never happens, your application will
  1299.         remain forever blocked.
  1300.  
  1301.     SEE ALSO
  1302.         exec.library/Wait()
  1303. guifront.library/GF_ReplyIMsg                   guifront.library/GF_ReplyIMsg
  1304.  
  1305.     NAME
  1306.         GF_ReplyIMsg - Replacement call for GadTools' GT_ReplyIMsg() (V37.2)
  1307.  
  1308.     SYNOPSIS
  1309.         GF_ReplyIMsg(intuimsg)
  1310.                      A0
  1311.  
  1312.         void GF_ReplyIMsg(struct IntuiMessage *);
  1313.  
  1314.     FUNCTION
  1315.         Reply a modified IntuiMessage obtained with GF_GetIMsg(). If you use
  1316.         GF_GetIMsg(), use this function where you would normally have used
  1317.         exec.library/ReplyMsg().
  1318.  
  1319.     INPUTS
  1320.         intuimsg  - As returned by GF_GetIMsg()
  1321.  
  1322.     NOTES
  1323.         This is a replacement call for GadTools' GT_ReplyIMsg(). If you want
  1324.         automatic hotkey processing, you must use this replacement call.
  1325.  
  1326.         Only use GF_ReplyIMsg on messages returned by GF_GetIMsg().
  1327.  
  1328.     BUGS
  1329.         None known.
  1330.  
  1331.     SEE ALSO
  1332.         gadtools.library/GT_ReplyIMsg(), exec.library/ReplyMsg()
  1333. guifront.library/GF_SetAliasKey               guifront.library/GF_SetAliasKey
  1334.  
  1335.     NAME
  1336.         GF_SetAliasKey - Define hotkey alias (V37.2)
  1337.  
  1338.     SYNOPSIS
  1339.         success = GF_SetAliasKey(gui, rawkey, gadgetid)
  1340.                                  A0   D0      D1
  1341.  
  1342.         BOOL GF_SetAliasKey(GUIFront *, UBYTE, UWORD);
  1343.  
  1344.     FUNCTION
  1345.         This function can be used to map rawkeys to function as
  1346.         keyboard shortcuts for selected gadgets. Typically, you would
  1347.         use this function to map RETURN/ENTER to the gadget representing
  1348.         the "default choice" (a "Cancel" button, for example).  When the
  1349.         user presses the alias key, your application will receive a GADGETUP
  1350.         message corresponding to the gadget for which the key is an alias.
  1351.         Alias keys for BUTTON_KINDs are also shift-cancellable, just like
  1352.         normal gadtools shortcut keys.
  1353.  
  1354.     INPUTS
  1355.         gui      - As returned from GF_CreateGUIA()
  1356.         rawkey   - Rawkey number of key to define as alias
  1357.         gadgetid - ID of gadget you want 'rawkey' to activate
  1358.  
  1359.     RESULTS
  1360.         TRUE if setting up alias key was successful, FALSE otherwise.
  1361.  
  1362.     NOTES
  1363.         Alias keys can be mapped to gadget which already have gadtools
  1364.         keyboard shortcuts (e.g. "_Use").
  1365.  
  1366.     BUGS
  1367.         None known.
  1368.  
  1369.     EXAMPLE
  1370.         The following makes the RETURN key map a gadget with id "GID_USE":
  1371.  
  1372.             GF_SetAliasKey(myGui, 0x44, GID_USE);
  1373.  
  1374.     SEE ALSO
  1375. guifront.library/GF_BeginRefresh             guifront.library/GF_BeginRefresh
  1376.  
  1377.     NAME
  1378.         GF_BeginRefresh - Begin refreshing friendly to GUIFront (V37.2)
  1379.  
  1380.     SYNOPSIS
  1381.         GF_BeginRefresh(gui)
  1382.                         A0
  1383.  
  1384.         void GF_BeginRefresh(GUIFront *);
  1385.  
  1386.     FUNCTION
  1387.         Invokes the intuition.library/BeginRefresh() function in a manner
  1388.         friendly to both GadTools and to GUIFront.  This function allows you
  1389.         to refresh a GUI from a generic refresh callback hook, such as the one
  1390.         used in connection with ASL_IntuiMsgFunc. It is not intended for use
  1391.         anywhere else. Call GF_EndRefresh() function when done.
  1392.  
  1393.     INPUTS
  1394.         gui - As returned by GF_CreateGUIA()
  1395.  
  1396.     NOTES
  1397.         Again, you only need this function if you are using requesters other
  1398.         than those supported by GUIFront (GF_AslRequest() and
  1399.         GF_EasyRequestArgs()), which supports callback hooks. GUIFront takes
  1400.         care of all normal window refreshing, including its own ASL
  1401.         requesters.
  1402.         Your hook should look something like this:
  1403.  
  1404.         struct Hook refreshhook =
  1405.         {
  1406.             {NULL, NULL},
  1407.             (ULONG (*)())refreshfunc,
  1408.             NULL, NULL
  1409.         };
  1410.  
  1411.         __saveds __asm void refreshfunc(register __a0 const struct Hook *hook,
  1412.                                         register __a2 APTR req,
  1413.                                         register __a1 struct IntuiMessage *imsg)
  1414.         {
  1415.             if (imsg->Class == IDCMP_REFRESHWINDOW)
  1416.             {
  1417.                 GUIFront *gui = (GUIFront *)(imsg->IDCMPWindow->UserData);
  1418.  
  1419.                 GF_BeginRefresh(gui);
  1420.                 GF_EndRefresh(gui,TRUE);
  1421.             }
  1422.         }
  1423.  
  1424.     BUGS
  1425.         None known.
  1426.  
  1427.     SEE ALSO
  1428.         GF_EndRefresh(), gadtools.library/GT_BeginRefresh()
  1429. guifront.library/GF_EndRefresh                 guifront.library/GF_EndRefresh
  1430.  
  1431.     NAME
  1432.         GF_EndRefresh - End refreshing friendly to GUIFront (V37.2)
  1433.  
  1434.     SYNOPSIS
  1435.         GF_EndRefresh(gui, all)
  1436.                       A0   D0
  1437.  
  1438.         void GF_EndRefresh(GUIFront *, BOOL);
  1439.  
  1440.     FUNCTION
  1441.         Invokes the intuition.library/EndRefresh() function in a manner
  1442.         friendly to both GadTools and to GUIFront. Call this function to
  1443.         end the refreshing process when you have used GF_BeginRefresh().
  1444.  
  1445.     INPUTS
  1446.         gui - As returned by GF_CreateGUIA()
  1447.         all - TRUE when done with refreshing
  1448.  
  1449.     NOTES
  1450.         See GF_BeginRefresh() for an example of how to write a refresh
  1451.         hook.
  1452.  
  1453.     BUGS
  1454.         None known.
  1455.  
  1456.     SEE ALSO
  1457.         GF_BeginRefresh(), gadtools.library/GT_EndRefresh()
  1458. guifront.library/GF_SetGadgetAttrsA       guifront.library/GF_SetGadgetAttrsA
  1459.  
  1460.     NAME
  1461.         GF_SetGadgetAttrsA - Change attributes of a gadget (V37.2)
  1462.         GF_SetGadgetAttrs  - Varargs stub for GF_SetGadgetAttrsA() (V37.2)
  1463.  
  1464.     SYNOPSIS
  1465.         GF_SetGadgetAttrsA(gui, gad, tags);
  1466.                            A0   A1   A2
  1467.  
  1468.         void GF_SetGadgetAttrsA(GUIFront *, struct Gadget *,
  1469.                                 struct TagItem *);
  1470.  
  1471.         GF_SetGadgetAttrs(gui, gad, ...)
  1472.  
  1473.         void GF_SetGadgetAttrs(GUIFront *, struct Gadget *, ...);
  1474.  
  1475.     FUNCTION
  1476.         Change the attributes of the specified gadget, according to the
  1477.         attributes chosen in the tag list. If an attribute is not provided
  1478.         in the tag list, its value remains unchanged.
  1479.  
  1480.     INPUTS
  1481.         gui   - As returned by GF_CreateGUIA()
  1482.         gad   - Gadget to modify
  1483.         tags  - GadTools-compatible modification tags (note: GETALT_KIND
  1484.                 currently does not support any modifiable tags)
  1485.  
  1486.     BUGS
  1487.         None known.
  1488.  
  1489.     SEE ALSO
  1490.         GF_GetGadgetAttrsA(), gadtools.library/GT_GetGadgetAttrsA()
  1491. guifront.library/GF_GetGadgetAttrsA       guifront.library/GF_GetGadgetAttrsA
  1492.  
  1493.     NAME
  1494.         GF_GetGadgetAttrsA - Obtain attributes of a gadget (V37.2)
  1495.         GF_GetGadgetAttrs  - Varargs stub for GF_GetGadgetAttrsA() (V37.2)
  1496.  
  1497.     SYNOPSIS
  1498.         tags_gotten = GF_GetGadgetAttrsA(gui, gadget, tags)
  1499.                                          A0   A1      A2
  1500.  
  1501.         ULONG GF_GetGadgetAttrsA(GUIFront *, struct Gadget *,
  1502.                                  struct TagItem *);
  1503.  
  1504.         tags_gotten = GF_GetGadgetAttrs(gui, gadget, ...)
  1505.  
  1506.         ULONG GF_GetGadgetAttrs(GUIFront *, struct Gadget *, ...);
  1507.  
  1508.     FUNCTION
  1509.         Retrieve the attributes of the specified gadget, according to the
  1510.         attributes chosen in the tag list.  For each entry in the tag list,
  1511.         ti_Tag identifies the attribute, and ti_Data is a pointer to
  1512.         the long variable where you wish the result to be stored.
  1513.  
  1514.     INPUTS
  1515.         gui    - As returned by GF_CreateGUIA()
  1516.         gadget - Gadget to obtain information about
  1517.         tags   - GadTools compatible list of tag values to obtain. In
  1518.                  addition to these you may also obtain information on
  1519.                  GETALT_KINDs:
  1520.  
  1521.                  ALT_AslRequester (void *)
  1522.  
  1523.                      The variable pointed to by ti_Data will be set to point
  1524.                      to the ASL requester structure allocated by GUIFront
  1525.                      during the call to GF_CreateGUIA(). The actual type of
  1526.                      this pointer depends on the GETALT subkind. An
  1527.                      ALTI_GetFile or ALTI_GetDir subkind will return a pointer
  1528.                      to a FileRequester, an ALTI_GetFont subkind will return
  1529.                      a pointer to a FontRequester and an ALTI_GetScreenMode
  1530.                      subkind will return a pointer to a ScreenModeRequester.
  1531.  
  1532.     RESULTS
  1533.         tags_gotten - The number of tags actually filled out by GUIFront.
  1534.                       Make sure you check that this value matches what you
  1535.                       are expecting, since unfilled tag values usually point
  1536.                       to old data, or even to garbage.
  1537.  
  1538.     NOTES
  1539.         GadTools' GT_GetGadgetAttrsA() only works from V39, but the function
  1540.         provided here works even under V37.
  1541.  
  1542.     BUGS
  1543.         None known.
  1544.  
  1545.     SEE ALSO
  1546.         GF_GetGadgetAttrsA(), gadtools.library/GT_SetGadgetAttrsA()
  1547. guifront.library/GF_LockGUI                       guifront.library/GF_LockGUI
  1548.  
  1549.     NAME
  1550.         GF_LockGUI - Lock a GUI window from user input (V37.2)
  1551.  
  1552.     SYNOPSIS
  1553.         GF_LockGUI(guifront)
  1554.                    A0
  1555.  
  1556.         void GF_LockGUI(GUIFront *);
  1557.  
  1558.     FUNCTION
  1559.         Lock the window of a GUI so it no longer accepts user input. The only
  1560.         functions left to the user are depth arrangement, window dragging and
  1561.         zipping. All gadgets will be un-selectable. It will also get the
  1562.         standard wait pointer set. The pointer at the time of locking will be
  1563.         restored when the window is unlocked (this will *not* happen on
  1564.         Kickstart V39 or higher!).
  1565.         Attempting to lock a GUI which is already locked will still succeed.
  1566.         A nesting count is maintained and incremented for each call to the
  1567.         function, and only when the count reaches 0 is the GUI actually
  1568.         unlocked.
  1569.  
  1570.     INPUTS
  1571.         guifront - As returned by CreateGUIA() (NULL is allowed)
  1572.  
  1573.     NOTES
  1574.         Each call to GF_LockGUI() must be matched by a call to GF_UnlockGUI().
  1575.  
  1576.     BUGS
  1577.         None known.
  1578.  
  1579.     SEE ALSO
  1580.         GF_UnlockGUI(), GF_UnlockGUIApp()
  1581. guifront.library/GF_UnlockGUI                   guifront.library/GF_UnlockGUI
  1582.  
  1583.     NAME
  1584.         GF_UnlockGUI - Unlock a locked GUI window (V37.2)
  1585.  
  1586.     SYNOPSIS
  1587.         GF_UnlockGUI(guifront)
  1588.                      A0
  1589.  
  1590.         void GF_UnlockGUI(GUIFront *);
  1591.  
  1592.     FUNCTION
  1593.         Unlock a GUI window previously locked with GF_LockGUI(). Once unlocked
  1594.         the window will once again accept user input and get its original
  1595.         mouse pointer back (default or custom). Under Kickstart V39 or higher
  1596.         the original window pointer will not be restored if it was set using
  1597.         SetWindowPointer().  You will have to restore the pointer yourself in
  1598.         this case.
  1599.         A nesting count is maintained and decremented for each call to
  1600.         this function, and only when the count reaches 0 is the GUI actually
  1601.         unlocked.
  1602.  
  1603.     INPUTS
  1604.         guifront - As returned by CreateGUIA() (NULL is allowed)
  1605.  
  1606.     NOTES
  1607.         Each call to GF_UnlockGUI() must be matched by a call to GF_LockGUI().
  1608.  
  1609.     SEE ALSO
  1610.         GF_LockGUI(), GF_LockGUIApp()
  1611. guifront.library/GF_LockGUIApp                 guifront.library/GF_LockGUIApp
  1612.  
  1613.     NAME
  1614.         GF_LockGUI - Lock all application GUIs from user input (V37.2)
  1615.  
  1616.     SYNOPSIS
  1617.         GF_LockGUIApp(guifrontapp)
  1618.                       A0
  1619.  
  1620.         void GF_LockGUIApp(GUIFrontApp *);
  1621.  
  1622.     FUNCTION
  1623.         This function provides an easy way of locking all windows associated
  1624.         with your application (handy for displaying blocking requesters, etc).
  1625.         For a more detailed explanation of just what "locking" means, refer
  1626.         to the description of GF_LockGUI()
  1627.         Attempting to lock all application GUIs when these are already locked
  1628.         will still succeed. A nesting count is maintained and incremented for
  1629.         each call to this function, and only when the count reaches 0 are the
  1630.         GUIs actually unlocked.
  1631.  
  1632.     INPUTS
  1633.         guifrontapp - As returned by CreateGUIApp() (NULL is allowed)
  1634.  
  1635.     NOTES
  1636.         Each call to GF_LockGUIApp() must be matched by a call to
  1637.         GF_UnlockGUIApp().
  1638.  
  1639.     BUGS
  1640.         None known.
  1641.  
  1642.     SEE ALSO
  1643.         GF_UnlockGUIApp(), GF_LockGUI()
  1644. guifront.library/GF_UnlockGUIApp             guifront.library/GF_UnlockGUIApp
  1645.  
  1646.     NAME
  1647.         GF_UnlockGUI - Unlock all application GUI windows (V37.2)
  1648.  
  1649.     SYNOPSIS
  1650.         GF_UnlockGUIApp(guifrontapp)
  1651.                         A0
  1652.  
  1653.         void GF_UnlockGUIApp(GUIFrontApp *);
  1654.  
  1655.     FUNCTION
  1656.         Unlocks all application GUIs previously locked with GF_LockGUIApp().
  1657.         Once unlocked windows will once again accept user input and get their
  1658.         original mouse pointers back (default or custom). See description of
  1659.         GF_LockGUI() for further notes on this.
  1660.         A nesting count is maintained and decremented for each call to
  1661.         this function, and only when the count reaches 0 are the GUIs
  1662.         actually unlocked.
  1663.  
  1664.     INPUTS
  1665.         guifront - As returned by CreateGUIA() (NULL is allowed)
  1666.  
  1667.     NOTES
  1668.         Each calls to GF_LockGUIApp() must be matched by a call to this
  1669.         function.
  1670.  
  1671.     SEE ALSO
  1672.         GF_LockGUIApp(), GF_LockGUI()
  1673. guifront.library/GF_LoadPrefs                   guifront.library/GF_LoadPrefs
  1674.  
  1675.     NAME
  1676.         GF_LoadPrefs - Load preferences from a file (V37.2)
  1677.  
  1678.     SYNOPSIS
  1679.         success = GF_LoadPrefs(filename)
  1680.                                A0
  1681.  
  1682.         BOOL GF_LoadPrefs(char *);
  1683.  
  1684.     FUNCTION
  1685.         This function loads a set of preferences from a file into GUIFront.
  1686.         All previous preferences settings will be lost in the process.
  1687.  
  1688.     INPUTS
  1689.         filename  - Name of file from which to load preferences
  1690.  
  1691.     RESULTS
  1692.         TRUE on success, FALSE otherwise.
  1693.  
  1694.     NOTES
  1695.         This function is not normally used by GUIFront programmers.
  1696.  
  1697.     BUGS
  1698.         None known.
  1699.  
  1700.     SEE ALSO
  1701.         GF_SavePrefs()
  1702. guifront.library/GF_SavePrefs                   guifront.library/GF_SavePrefs
  1703.  
  1704.     NAME
  1705.         GF_SavePrefs - Save current preferences to a file
  1706.  
  1707.     SYNOPSIS
  1708.         GF_SavePrefs(filename)
  1709.                      A0
  1710.  
  1711.         void GF_SavePrefs(char *);
  1712.  
  1713.     FUNCTION
  1714.         This function saves the current preferences to a file (overwriting
  1715.         the existing file if necessary).
  1716.  
  1717.     INPUTS
  1718.         filename - Name of file to save preferences to
  1719.  
  1720.     NOTES
  1721.         This function is not normally used by GUIFront programmers.
  1722.  
  1723.     BUGS
  1724.         None known.
  1725.  
  1726.     EXAMPLE
  1727.  
  1728.     SEE ALSO
  1729.         GF_LoadPrefs()
  1730. guifront.library/GF_LockPrefsList           guifront.library/GF_LockPrefsList
  1731.  
  1732.     NAME
  1733.         GF_LockPrefsList - Lock preferences list (V37.2)
  1734.  
  1735.     SYNOPSIS
  1736.         GF_LockPrefsList()
  1737.  
  1738.         void GF_LockPrefsList(void);
  1739.  
  1740.     FUNCTION
  1741.         This function can be used to obtain an exclusive lock on GUIFront's
  1742.         internal application preferences list. The list should be locked prior
  1743.         to traversing it with GF_FirstPrefsNode() and GF_NextPrefsNode(), to
  1744.         prevent the list from changing midway through it.
  1745.  
  1746.     NOTES
  1747.         Your task will be put to sleep until the lock can be obtained. If this
  1748.         will never be possible, your task will never wake up.
  1749.         This function is not normally used by GUIFront programmers.
  1750.  
  1751.     BUGS
  1752.         None known.
  1753.  
  1754.     SEE ALSO
  1755.         GF_UnlockPrefsList(), GF_FirstPrefsNode()
  1756. guifront.library/GF_UnlockPrefsList       guifront.library/GF_UnlockPrefsList
  1757.  
  1758.     NAME
  1759.         GF_UnlockPrefsList - Unlock preferences list (V37.2)
  1760.  
  1761.     SYNOPSIS
  1762.         GF_UnlockPrefsList()
  1763.  
  1764.         void GF_UnlockPrefsList(void);
  1765.  
  1766.     FUNCTION
  1767.         This function unlocks the lock which you previously obtained with
  1768.         GF_LockPrefsList().
  1769.  
  1770.     NOTES
  1771.         Calling this function without having obtained the lock in the first
  1772.         place will likely crash the system.
  1773.  
  1774.         All calls to GF_LockPrefsList() MUST be matched with a call to
  1775.         GF_UnlockPrefsList(). Also, don't keep a lock on the list for
  1776.         too long - someone else may be waiting for it.
  1777.  
  1778.     NOTES
  1779.         This function is not normally used by GUIFront programmers.
  1780.  
  1781.     BUGS
  1782.         None known.
  1783.  
  1784.     SEE ALSO
  1785.         GF_LockPrefsList()
  1786. guifront.library/GF_FirstPrefsNode         guifront.library/GF_FirstPrefsNode
  1787.  
  1788.     NAME
  1789.         GF_FirstPrefsNode - Find first preferences node (V37.2)
  1790.  
  1791.     SYNOPSIS
  1792.         handle = GF_FirstPrefsNode()
  1793.  
  1794.         PrefsHandle *GF_FirstPrefsNode(void);
  1795.  
  1796.     FUNCTION
  1797.         This function returns a generic handle for the first application on
  1798.         the preferences list. The handle itself is private, but you can use
  1799.         GF_CopyAppID() to obtain the name of the application using the
  1800.         preferences associated with the handle. This name can then be used to
  1801.         obtain information about the actual preferences settings for this
  1802.         application (via GF_GetPrefsAttrA()), or it can be used to modify them
  1803.         using GF_SetPrefsAttrA().
  1804.  
  1805.     RESULTS
  1806.         handle  - A generic preferences handle.
  1807.  
  1808.     NOTES
  1809.         You should make sure the preferences list is properly locked before
  1810.         attempting to call this function.
  1811.         This function is not normally used by GUIFront programmers.
  1812.  
  1813.     BUGS
  1814.         None known.
  1815.  
  1816.     EXAMPLE
  1817.  
  1818.         /* Scan the preferences list, printing out the ID of each
  1819.          * application currently being tracked by GUIFront
  1820.          */
  1821.  
  1822.         PrefsHandle *ph;
  1823.         GF_LockPrefsList();
  1824.         for (ph = GF_FirstPrefsNode; ph; ph = GF_NextPrefsNode(ph))
  1825.         {
  1826.             char appname[50];
  1827.  
  1828.             GF_CopyAppID(ph, appname);
  1829.             Printf("Application: '%s'\n", appname);
  1830.         }
  1831.         GF_UnlockPrefsList();
  1832.  
  1833.     SEE ALSO
  1834.         GF_LockPrefsList(), GF_CopyAppID(), GF_NextPrefsNode()
  1835. guifront.library/GF_NextPrefsNode           guifront.library/GF_NextPrefsNode
  1836.  
  1837.     NAME
  1838.         GF_NextPrefsNode - Find next preferences node (V37.2)
  1839.  
  1840.     SYNOPSIS
  1841.         new_handle = GF_NextPrefsNode(prev_handle)
  1842.                                       A0
  1843.  
  1844.         PrefsHandle *GF_NextPrefsNode(PrefsHandle *);
  1845.  
  1846.     FUNCTION
  1847.         Given one preferences handle, this function returns a handle on the
  1848.         next preferences application node in memory. It should be clear to
  1849.         everyone that for this to work properly, the preferences list must
  1850.         first be locked with GF_LockPrefsList().
  1851.  
  1852.     INPUTS
  1853.         prev_handle - As returned by a previous call to GF_FirstPrefsNode()
  1854.                       or GF_NextPrefsNode()
  1855.  
  1856.     RESULTS
  1857.         new_handle  - A generic preferences handle (the next one in the chain)
  1858.  
  1859.     BUGS
  1860.         None known.
  1861.  
  1862.     NOTES
  1863.         This function is not normally used by GUIFront programmers.
  1864.  
  1865.     EXAMPLE
  1866.         See GF_FirstPrefsNode() for an example of how to do a complete
  1867.         scan of the preferences list.
  1868.  
  1869.     SEE ALSO
  1870.         GF_CopyAppID()
  1871. guifront.library/GF_CopyAppID                   guifront.library/GF_CopyAppID
  1872.  
  1873.     NAME
  1874.         GF_CopyAppID - Copy application ID of preferences node (V37.2)
  1875.  
  1876.     SYNOPSIS
  1877.         GF_CopyAppID(prefshandle, buffer)
  1878.                      A0                  A1
  1879.  
  1880.         void GF_CopyAppID(PrefsHandle *, char *);
  1881.  
  1882.     FUNCTION
  1883.         Given a private preferences handle (as returned by GF_FirstPrefsNode()
  1884.         or GF_NextPrefsNode()), this function copies the name of the
  1885.         application using those preferences to a buffer supplied by you.
  1886.         This is the only link between a `PrefsHandle' and GF_GetPrefsAttrA()
  1887.         and SetPrefsAttrA().
  1888.  
  1889.     INPUTS
  1890.         prefshandle - As returned by a previous call to GF_FirstPrefsNode()
  1891.                       or GF_NextPrefsNode()
  1892.  
  1893.         buffer      - string buffer (50 chars max) to store the Application
  1894.                       ID associated with this prefshandle (an empty string is
  1895.                       returned for the default prefs ("", not NULL))
  1896.  
  1897.     BUGS
  1898.         None known.
  1899.  
  1900.     NOTES
  1901.         This function is not normally used by GUIFront programmers.
  1902.  
  1903.     EXAMPLE
  1904.         See GF_FirstPrefsNode() for an example of using this function.
  1905.  
  1906.     SEE ALSO
  1907.         GF_SetPrefsAttrA(), GF_GetPrefsAttrA()
  1908. guifront.library/GF_GetPrefsAttrA           guifront.library/GF_GetPrefsAttrA
  1909.  
  1910.     NAME
  1911.         GF_GetPrefsAttrA - Obtain preferences attributes (V37.2)
  1912.         GF_GetPrefsAttr  - Varargs stub for GF_GetPrefsAttrA() (V37.2)
  1913.  
  1914.     SYNOPSIS
  1915.         tags_gotten = GF_GetPrefsAttrA(appid, tags)
  1916.                                        A0     A1
  1917.  
  1918.         int GF_GetPrefsAttrA(char *, struct TagItem *);
  1919.  
  1920.         tags_gotten = GF_GetPrefsAttr(appid, ...)
  1921.  
  1922.         int GF_GetPrefsAttr(char *, ...);
  1923.  
  1924.     FUNCTION
  1925.         This function is used to obtain information about individual
  1926.         preferences attributes for any particular application. For each item
  1927.         in the tag list, ti_Tag indicates the id of the attribute you wish
  1928.         to inquire about, and ti_Data designates a place to store the result.
  1929.  
  1930.     INPUTS
  1931.         appid   - Application ID of prefs to ontain information about (as
  1932.                   returned by GF_CopyAppID()). (An empty string ("") indicates
  1933.                   the current default preferences)
  1934.  
  1935.         tags    - A tag list of preferences attributes to obtain. Supported
  1936.                   tags include the following:
  1937.  
  1938.                   PRF_GadgetScreenFont (BOOL *)
  1939.  
  1940.                       Your supplied BOOL will be set to TRUE if the application
  1941.                       uses the current screen font for gadgets, and FALSE if
  1942.                       it uses a custom font (see PRF_GadgetFontName and
  1943.                       PRF_GadgetFontYSize)
  1944.  
  1945.                   PRF_GadgetFontYSize (UWORD *)
  1946.  
  1947.                       The UWORD pointed to by ti_Data will be set to the size
  1948.                       of the custom gadget font. It is safe to ask about this
  1949.                       tag if the application does not use a custom font.
  1950.  
  1951.                   PRF_GadgetFontName (char *)
  1952.  
  1953.                       The string of max 50 chars pointed to by ti_Data will be
  1954.                       set to the name of the custom font used for gadget labels.
  1955.                       If the application does not use a custom font, your
  1956.                       string will be set to "\0" (i.e. an empty string).
  1957.  
  1958.                   PRF_FrameScreenFont (BOOL *)
  1959.  
  1960.                       The BOOL pointed to by ti_Data will be set to TRUE if
  1961.                       the application uses the current screen font for its
  1962.                       frame headlines, and FALSE if it uses a custom font
  1963.                       (see PRF_FrameFontName and PRF_FrameFontYSize)
  1964.  
  1965.                   PRF_FrameFontName (char *)
  1966.  
  1967.                       The string of max 50 chars pointed to by ti_Data will be
  1968.                       set to the name of the custom font used for frame
  1969.                       headlines.  If this application does not use a custom
  1970.                       font, your string will be set to "\0" (i.e. an empty
  1971.                       string).
  1972.  
  1973.                   PRF_FrameFontYSize (UWORD *)
  1974.  
  1975.                       The UWORD pointed to by ti_Data will be set to the size of
  1976.                       the custom frame headline font.  It is safe to ask about
  1977.                       this tag if the application does not use a custom font.
  1978.  
  1979.                   PRF_FrameFontBold (BOOL *)
  1980.  
  1981.                       The BOOL pointed to by ti_Data will be set to TRUE if
  1982.                       frame headlines are rendered in boldface, and FALSE
  1983.                       otherwise.
  1984.  
  1985.                   PRF_FrameFontItalics (BOOL *)
  1986.  
  1987.                       The BOOL pointed to by ti_Data will be set to TRUE if
  1988.                       frame headlines are rendered in italics, and FALSE
  1989.                       otherwise.
  1990.  
  1991.                   PRF_FrameFont3D (BOOL *)
  1992.  
  1993.                       The BOOL pointed to by ti_Data will be set to TRUE if
  1994.                       frame headlines are rendered in "3d", and FALSE otherwise.
  1995.  
  1996.                   PRF_FrameFontFGPen (UWORD *)
  1997.  
  1998.                       The UWORD pointed to by ti_Data will be set to the color
  1999.                       to use for frame headlines.  Note that this is the actual
  2000.                       palette index number, not, as the name might suggest, an
  2001.                       "intuition pen number".
  2002.  
  2003.                   PRF_FrameFontCenter (BOOL *)
  2004.  
  2005.                       The BOOL pointed to by ti_Data will be set to TRUE if
  2006.                       frame headlines are being vertically centered on the
  2007.                       frame, and FALSE if they are rendered above the frame.
  2008.  
  2009.                   PRF_FrameFontCentering (UWORD *)
  2010.  
  2011.                       The UWORD pointed to by ti_Data will be set to
  2012.                       PRFFC_Left if the application is using left justified
  2013.                       frame headlines, PRFFC_Center if it is using centered
  2014.                       headlines and PRFFC_Right if it is using right justified
  2015.                       headlines.
  2016.  
  2017.                   PRF_AllowBackfill (BOOL *)
  2018.  
  2019.                       The BOOL pointed to by ti_Data will be set to TRUE if
  2020.                       backfilling is allowed for this application, and FALSE
  2021.                       otherwise.
  2022.  
  2023.                   PRF_BackfillFGPen (UWORD *)
  2024.  
  2025.                       The UWORD pointed to by ti_Data will be set to the first
  2026.                       color to use for window backfilling.  Note that this is
  2027.                       the actual palette index number, not, as the name might
  2028.                       suggest, an "intuition pen number".
  2029.  
  2030.                   PRF_BackfillBGPen (UWORD *)
  2031.  
  2032.                       The UWORD pointed to by ti_Data will be set to the second
  2033.                       color to use for window backfilling.  Note that this is
  2034.                       the actual palette index number, not, as the name might
  2035.                       suggest, an "intuition pen number".
  2036.  
  2037.                   PRF_FrameStyleQuery (FrameStyleQuery *)
  2038.  
  2039.                       The FrameStyleQuery structure pointed to by ti_Data will
  2040.                       be filled out according to the current rendering mode for
  2041.                       a particular gadget.
  2042.  
  2043.                       A FrameStyleQuery looks like this:
  2044.  
  2045.                       typedef struct
  2046.                       {
  2047.                             int fsq_GadgetKind;
  2048.                             BOOL fsq_Xen;
  2049.                       } FrameStyleQuery;
  2050.  
  2051.                       Prior to calling GF_GetPrefsAttrA(), fill out the
  2052.                       fsq_GadgetKind field with the gadget kind you wish to
  2053.                       acquire information about (BUTTON_KIND, for example).  The
  2054.                       fsq_Xen field will then be set to TRUE if this gadget kind
  2055.                       is being rendered in "xen mode", and FALSE if it is being
  2056.                       rendered in normal (GadTools) mode.
  2057.  
  2058.                   PRF_XenFrameColor (UWORD *)
  2059.  
  2060.                       The UWORD pointed to by ti_Data will be set to the xen
  2061.                       framing color using by this application.
  2062.  
  2063.                   PRF_SimpleRefresh (BOOL *)
  2064.  
  2065.                       The BOOL pointed to by ti_Data will be set to TRUE if this
  2066.                       application uses simple refresh windows, and FALSE if it
  2067.                       uses smart refreshing.
  2068.  
  2069.                   PRF_Author (char *)
  2070.  
  2071.                       The string of max 70 characters pointed to by ti_Data will
  2072.                       be set to the author of this application, or "" (an empty
  2073.                       string) if this information does not exist.
  2074.  
  2075.                   PRF_Date (char *)
  2076.  
  2077.                       The string of max 70 characters pointed to by ti_Data will
  2078.                       be set to the date of release of this application, or ""
  2079.                       (an empty string) if this information does not exist.
  2080.  
  2081.                   PRF_LongDesc (char *)
  2082.  
  2083.                       The string of max 70 characters pointed to by ti_Data will
  2084.                       be set to a long description of this application, or ""
  2085.                       (an empty string) if this information does not exist.
  2086.  
  2087.                   PRF_Version (char *)
  2088.  
  2089.                       The string of max 70 characters pointed to by ti_Data will
  2090.                       be set to the version of this application, or "" (an empty
  2091.                       string) if this information does not exist.
  2092.  
  2093.     RESULTS
  2094.         tags_gotten - The number of tags actually filled out by GUIFront.
  2095.                       Make sure you check that this value matches what
  2096.                       you are expecting, since unfilled tag values usually
  2097.                       point to old data, or even garbage.
  2098.  
  2099.     NOTES
  2100.         This function is not normally used by GUIFront programmers.
  2101.  
  2102.     BUGS
  2103.         None known.
  2104.  
  2105.     SEE ALSO
  2106.         GF_SetPrefsAttrA()
  2107. guifront.library/GF_SetPrefsAttrA           guifront.library/GF_SetPrefsAttrA
  2108.  
  2109.     NAME
  2110.         GF_SetPrefsAttrA - Set preferences attributes (V37.2)
  2111.         GF_SetPrefsAttr  - Varargs stub for GF_SetPrefsAttrA() (V37.2)
  2112.  
  2113.     SYNOPSIS
  2114.         tags_set = GF_SetPrefsAttrA(appid, tags)
  2115.                                    A0      A1
  2116.  
  2117.         int GF_SetPrefsAttrA(char *, struct TagItem *);
  2118.  
  2119.         tags_set = GF_SetPrefsAttr(appid, ...)
  2120.  
  2121.         int GF_SetPrefsAttr(char *, ...);
  2122.  
  2123.     FUNCTION
  2124.         This function is used to set individual preferences attributes for
  2125.         any particular application. For each item in the tag list, ti_Tag
  2126.         indicates the id of the attribute you wish to set, and ti_Data
  2127.         the new value for the attribute. Unspecified attributes remain
  2128.         unchanged.
  2129.  
  2130.     INPUTS
  2131.         appid   - Application ID of prefs to change (as returned by
  2132.                   GF_CopyAppID())
  2133.  
  2134.         tags    - A tag list of preferences attributes to change. Supported
  2135.                   tags include the following:
  2136.  
  2137.                   PRF_GadgetFontYSize (UWORD)
  2138.  
  2139.                       ti_Data specifies the height of the custom font to use for
  2140.                       Gadget labels.  It is safe to supply this tag if the
  2141.                       application does not use a custom font for gadget labels.
  2142.  
  2143.                   PRF_GadgetFontName (char *)
  2144.  
  2145.                       ti_Data points to a string of max 50 characters,
  2146.                       specifying the name of the font to use for gadget labels
  2147.                       (complete with .font extension).  It is safe to use this
  2148.                       tag if the application does not use a custom font for
  2149.                       gadget labels.
  2150.  
  2151.                   PRF_GadgetScreenFont (BOOL)
  2152.  
  2153.                       If ti_Data is TRUE, the application will now use the
  2154.                       current screen font for gadget labels.  Otherwise, it will
  2155.                       use a custom font (as previously set by PRF_GadgetFontName
  2156.                       and PRF_GadgetFontYSize). Important note: If you set this
  2157.                       tag to TRUE, you should also specify PRF_GadgetFontYSize
  2158.                       and PRF_GadgetFontName, and these two tags should come
  2159.                       PRIOR to this tag in the tag list you supply.
  2160.  
  2161.                   PRF_FrameFontName (char *)
  2162.  
  2163.                       ti_Data points to a string of max 50 characters,
  2164.                       specifying the name of the font to use for frame headlines
  2165.                       (complete with .font extension).  It is safe to use this
  2166.                       tag if the application does not use a custom font for
  2167.                       frame headlines.
  2168.  
  2169.                   PRF_FrameFontYSize (UWORD)
  2170.  
  2171.                       ti_Data specifies the height of the custom font to use for
  2172.                       frame headlines.  It is safe to supply this tag if the
  2173.                       application does not use a custom font for frame
  2174.                       headlines.
  2175.  
  2176.                   PRF_FrameScreenFont (BOOL)
  2177.  
  2178.                       Set this tag to TRUE to make the application use the
  2179.                       current screen font for frame headlines, and FALSE to use
  2180.                       a custom font (as previously set by PRF_FrameFontName and
  2181.                       PRF_FrameFontYSize).  Important note:  If you set this tag
  2182.                       to TRUE, you should also specify PRF_FrameFontYSize and
  2183.                       PRF_FrameFontName, and these two tags should come PRIOR to
  2184.                       this tag in the tag list you supply.
  2185.  
  2186.                   PRF_FrameFontBold (BOOL)
  2187.  
  2188.                       Set this tag to TRUE to have frame headlines rendered in
  2189.                       boldface.
  2190.  
  2191.                   PRF_FrameFontItalics (BOOL)
  2192.  
  2193.                       Set this tag to TRUE to have frame headlines rendered in
  2194.                       italics.
  2195.  
  2196.                   PRF_FrameFont3D (BOOL)
  2197.  
  2198.                       Set this tag to TRUE to have frame headlines rendered in
  2199.                       pseudo-3d (with a black shadow).
  2200.  
  2201.                   PRF_FrameFontFGPen (UWORD)
  2202.  
  2203.                       This tag is used to specify the color in which frame
  2204.                       headlines will be rendered.  Note that this is the actual
  2205.                       palette index number, not, as the name might suggest, an
  2206.                       "intuition pen number".
  2207.  
  2208.                   PRF_FrameFontCenter (BOOL)
  2209.  
  2210.                       Set this tag to TRUE to have frame headlines vertically
  2211.                       centered on the frame, and FALSE to have them rendered
  2212.                       above the frame.
  2213.  
  2214.                   PRF_FrameFontCentering (UWORD *)
  2215.  
  2216.                       Set this tag to PRFFC_Left to have frame headlines left
  2217.                       justified on the frame, PRFFC_Center to have it centered
  2218.                       and PRFFC_Right to have it right justified.
  2219.  
  2220.                   PRF_AllowBackfill (BOOL)
  2221.  
  2222.                       Set this tag to TRUE to allow this application to backfill
  2223.                       its windows.
  2224.  
  2225.                   PRF_BackfillFGPen (UWORD)
  2226.  
  2227.                       This tag is used to specify the first color to use for
  2228.                       window backfilling for this application.  Note that this
  2229.                       is the actual palette index number, not, as the name might
  2230.                       suggest, an "intuition pen number".
  2231.  
  2232.                   PRF_BackfillBGPen (UWORD)
  2233.  
  2234.                       This tag is used to specify the second color to use for
  2235.                       window backfilling for this application.  Note that this
  2236.                       is the actual palette index number, not, as the name might
  2237.                       suggest, an "intuition pen number".
  2238.  
  2239.                   PRF_FrameStyleQuery (FrameStyleQuery *)
  2240.  
  2241.                       This tag is used to control frame rendering for individual
  2242.                       gadgets.
  2243.  
  2244.                       A FrameStyleQuery looks like this:
  2245.  
  2246.                       typedef struct
  2247.                       {
  2248.                           int fsq_GadgetKind;
  2249.                           BOOL fsq_Xen;
  2250.                       } FrameStyleQuery;
  2251.  
  2252.                       Prior to calling GF_SetPrefsAttrA(), fill out the
  2253.                       fsq_GadgetKind field with the gadget kind for which you
  2254.                       wish to set the frame rendering style (BUTTON_KIND, for
  2255.                       example).  Set the fsq_Xen field to TRUE if you wish this
  2256.                       gadget kind to be rendered in "xen mode", and FALSE if you
  2257.                       want it to be rendered in normal GadTools mode.
  2258.  
  2259.                   PRF_XenFrameColor (UWORD)
  2260.  
  2261.                       This tag is used to specify the color of the xen frame
  2262.                       box which GUIFront draws around xen-gadgets.
  2263.  
  2264.                   PRF_SimpleRefresh (BOOL)
  2265.  
  2266.                       Set this tag to TRUE if you want this application to
  2267.                       employ simple window refreshing (which is cheap in terms
  2268.                       of memory usage, but tend to refresh with a bit of
  2269.                       flicker).  Set it to FALSE to use Intuition's smart
  2270.                       refreshing scheme, which is expensive but doesn't flicker
  2271.                       at all.
  2272.  
  2273.     NOTES
  2274.         This function is not normally used by GUIFront programmers.
  2275.  
  2276.     RESULTS
  2277.         tags_set - The number of attributes actually set.
  2278.  
  2279.     BUGS
  2280.         None known.
  2281.  
  2282.     SEE ALSO
  2283.         GF_GetPrefsAttrA()
  2284. guifront.library/GF_DeletePrefs               guifront.library/GF_DeletePrefs
  2285.  
  2286.     NAME
  2287.         GF_DeletePrefs - Delete a preferences node (V37.2)
  2288.  
  2289.     SYNOPSIS
  2290.         success = GF_DeletePrefs(appid)
  2291.                                  A0
  2292.  
  2293.         BOOL GF_DeletePrefs(char *);
  2294.  
  2295.     FUNCTION
  2296.         This function deletes all preferences information about any particular
  2297.         application. When the application next starts up, it will be assigned
  2298.         all the default preferences.
  2299.  
  2300.     INPUTS
  2301.         appid - Application ID of prefs to delete (as returned by
  2302.                 GF_CopyAppID())
  2303.  
  2304.     RESULTS
  2305.         TRUE if preferences were deleted, FALSE otherwise.
  2306.  
  2307.     NOTES
  2308.         The preferences list need not be locked prior to calling this function.
  2309.         This function is not normally used by GUIFront programmers.
  2310.  
  2311.     BUGS
  2312.         None known.
  2313.  
  2314.     SEE ALSO
  2315. guifront.library/GF_NotifyPrefsChange   guifront.library/GF_NotifyPrefsChange
  2316.  
  2317.     NAME
  2318.         GF_NotifyPrefsChange - Set up notification on prefs changes (V37.2)
  2319.  
  2320.     SYNOPSIS
  2321.         success = GF_NotifyPrefsChange(task, signals)
  2322.                                        A0    D0
  2323.  
  2324.         BOOL GF_NotifyPrefsChange(struct Task *, ULONG);
  2325.  
  2326.     FUNCTION
  2327.         This function asks GUIFront to signal a task when the preferences
  2328.         list changes. More specifically, the task will be signalled for
  2329.         each new application as it starts up. This allows a preferences
  2330.         program to keep its visual list of applications updated at all times.
  2331.  
  2332.     INPUTS
  2333.         task     - Task you want GUIFront to signal
  2334.         signals  - Signals you want GUIFront to send
  2335.  
  2336.     RESULTS
  2337.         TRUE if notification setup was successful, FALSE otherwise.
  2338.  
  2339.     NOTES
  2340.         You will not be notified when applications are removed from the
  2341.         preferences list by GF_DeletePrefs().
  2342.  
  2343.         This function is not normally used by GUIFront programmers.
  2344.  
  2345.     BUGS
  2346.         None known.
  2347.  
  2348.     EXAMPLE
  2349.  
  2350.         /* This example tells GUIFront to notify the current task
  2351.          * with a ^F each time the preferences list changes
  2352.          */
  2353.  
  2354.         GF_NotifyPrefsChange(FindTask(0), SIGBREAKF_CTRL_F);
  2355.  
  2356.     SEE ALSO
  2357.         GF_EndNotifyPrefsChange()
  2358. guifront.library/GF_EndNotifyPrefsChange               GF_EndNotifyPrefsChange
  2359.  
  2360.     NAME
  2361.         GF_EndNotifyPrefsChange - End preferences change notification (V37.2)
  2362.  
  2363.     SYNOPSIS
  2364.         GF_EndNotifyPrefsChange(task);
  2365.                                 A0
  2366.  
  2367.         void GF_EndNotifyPrefsChange(struct Task *);
  2368.  
  2369.     FUNCTION
  2370.         This function terminates preferences change notification.
  2371.  
  2372.     INPUTS
  2373.         task  - Task to end preferences change notification for, as
  2374.                 previously set up with GF_NotifyPrefsChange()
  2375.  
  2376.     NOTES
  2377.         It is safe to call this function even though setting up notification
  2378.         with GF_NotifyPrefsChange() failed.
  2379.  
  2380.         It is imperative that the task for signalling remains running for as
  2381.         long as notification is active. Signalling a random memory location
  2382.         is not such a good idea.
  2383.  
  2384.         This function is not normally used by GUIFront programmers.
  2385.  
  2386.     BUGS
  2387.         None known.
  2388.  
  2389.     SEE ALSO
  2390.         GF_NotifyPrefsChange()
  2391. guifront.library/GF_AslRequest                 guifront.library/GF_AslRequest
  2392.  
  2393.     NAME
  2394.         GF_AslRequest - Display ASL requester friendly to GUIFront (V37.2)
  2395.         GF_AslRequestTags - Varargs stub for GF_AslRequest() (V37.2)
  2396.  
  2397.     SYNOPSIS
  2398.         GF_AslRequest(requester, tags);
  2399.                       A0         A1
  2400.  
  2401.         BOOL GF_AslRequest(APTR, struct TagItem *);
  2402.  
  2403.         GF_AslRequestTags(requester, ...)
  2404.  
  2405.         BOOL GF_AslRequestTags(APTR, ...);
  2406.  
  2407.     FUNCTION
  2408.         This function puts up an ASL requester in a way which is friendly
  2409.         to GUIFront. This means GUIFront supplies all the proper refresh
  2410.         callback hooks to make the requester work with simple refreshing
  2411.         applications.
  2412.  
  2413.     INPUTS
  2414.         requester - As obtained with asl.library/AllocAslRequest()
  2415.         tags      - As expected by asl.library/AslRequest()
  2416.  
  2417.     NOTES
  2418.         In order for refreshing to work, you MUST supply a pointer to one
  2419.         of your GUI windows, using the ASL_Window tag. Any GUI window will
  2420.         do, because they all share the same message port.
  2421.  
  2422.     BUGS
  2423.         None known.
  2424.  
  2425.     SEE ALSO
  2426.         asl.library/AllocAslRequest(), asl.library/AslRequest()
  2427. guifront.library/GF_EasyRequestArgs       guifront.library/GF_EasyRequestArgs
  2428.  
  2429.     NAME
  2430.         GF_EasyRequestArgs - Display EasyRequest friendly to GUIFront (V37.2)
  2431.         GF_EasyRequest - Varargs stub for GF_EasyRequestArgs() (V37.2)
  2432.  
  2433.     SYNOPSIS
  2434.         GF_EasyRequestArgs(guifrontapp, win, easystruct, idcppptr, arglist);
  2435.                            D0           D1   A0          A1        A2
  2436.  
  2437.         long GF_EasyRequestArgs(GUIFrontApp *,struct Window *,
  2438.                                 struct EasyStruct *,ULONG *, APTR);
  2439.  
  2440.         GF_EasyRequest(guifrontapp, win, easystruct, idcppptr, ...)
  2441.  
  2442.         long GF_EasyRequest(GUIFrontApp *,struct Window *,
  2443.                             struct EasyStruct *,ULONG *, ...);
  2444.  
  2445.     FUNCTION
  2446.         This function puts up an Intuition EasyRequest in a way which is
  2447.         friendly to GUIFront. This means GUIFront supplies all the proper
  2448.         refresh callback hooks to make the requester work with simple
  2449.         refreshing applications.
  2450.  
  2451.     INPUTS
  2452.         guifrontapp - As obtained with GF_CreateGUIAppA()
  2453.         win         - Reference window pointer, determines the screen and
  2454.                       title of the requester window. See notes.
  2455.         idcmpptr    - Pointer to IDCMP flags that you want to terminate the
  2456.                       requester.  This pointer may be NULL.
  2457.         arglist     - Arguments for format commands
  2458.  
  2459.     RESULT
  2460.         Returns 0, 1, ..., N for successive GadgetID values, for the gadgets
  2461.         you specify for the requester.  NOTE: The numbering from left to right
  2462.         is actually: 1, 2, ..., N, 0. This is for compatibility with
  2463.         AutoRequest(), which has FALSE for the rightmost gadget.
  2464.         The IDCMPFlag value is in the longword pointed to by IDCMP_ptr.
  2465.         -1 means that one of the caller-supplied IDCMPFlags occurred.
  2466.  
  2467.     BUGS
  2468.         None known.
  2469.  
  2470.     NOTE
  2471.         In order for refreshing to work, you MUST supply a pointer to one
  2472.         of your GUI windows in 'win'. Any GUI window will do, because they
  2473.         all share the same message port.
  2474.  
  2475.         This function will lock all GUIs of your application for the
  2476.         duration of the requester.
  2477.  
  2478.         Final note: If you have reqtools.library (© Nico François) installed
  2479.         on your system, this function will use it in stead of intuition.
  2480.  
  2481.     SEE ALSO
  2482.         intuition.library/EasyRequestArgs()
  2483. guifront.library/GF_ProcessListView       guifront.library/GF_ProcessListView
  2484.  
  2485.     NAME
  2486.         GF_ProcessListView - Handle listview hotkeys (V37.2)
  2487.  
  2488.     SYNOPSIS
  2489.         GF_ProcessListView(guifront, gadgetspec, imsg, ordinal);
  2490.                            A0        A1          A2    A3
  2491.  
  2492.         BOOL GF_ProcessListView(GUIFront * const, GadgetSpec * const,
  2493.                                 struct IntuiMessage * const,
  2494.                                 UWORD * const);
  2495.  
  2496.     FUNCTION
  2497.         This function can be used to process cursor keys as listview
  2498.         hotkeys. When the user presses cursor-up, the item preceeding the
  2499.         currently selected listview item is selected. When the user presses
  2500.         cursor-down, the item proceeding the currently selected listview
  2501.         item is selected. If the SHIFT key is held down, the currently
  2502.         selected item will be advanced by the number of visible listview
  2503.         lines, until the beginning of, or end of the listview. If the CTRL
  2504.         key is held down the currently selected item will be set to either
  2505.         the first or the last entry in the list connected to the listview.
  2506.         The listview will be visually correctly updated with either
  2507.         GTLV_MakeVisible or GTLV_Top, depending on which GadTools version
  2508.         the user has.
  2509.  
  2510.     INPUTS
  2511.         guifront     - As obtained with GF_CreateGUIA()
  2512.         gadgetspec   - Your listview GadgetSpec (NOT the gadget itself!)
  2513.         imsg         - A message obtained with GF_GetIMsg()
  2514.         ordinal      - The ordinal number of the new, selected item.
  2515.  
  2516.     RESULT
  2517.         TRUE if the user pressed a valid hotkey making the currently
  2518.         selected item change.
  2519.         FALSE if the event in 'imsg' is not a RAWKEY, or if it isn't
  2520.         a cursor key (in this case, ignore the result you get back in
  2521.         'ordinal')
  2522.  
  2523.     BUGS
  2524.         None known.
  2525.  
  2526.     EXAMPLE
  2527.  
  2528.         if (imsg = GF_GetIMsg(myguifrontapp))
  2529.         {
  2530.             switch (imsg->Class)
  2531.             {
  2532.                 case IDCMP_RAWKEY:
  2533.                 {
  2534.                     UWORD ordinal;
  2535.  
  2536.                     if (GF_ProcessListView(mygui, &mylistv, imsg, &ordinal))
  2537.                     {
  2538.                         currently_selected = ordinal;
  2539.                         update_program();
  2540.                     }
  2541.                     break;
  2542.                 }
  2543.                 /* ... */
  2544.             }
  2545.             /* ... */
  2546.         }
  2547.  
  2548.     SEE ALSO
  2549. guifront.library/GF_SignalPrefsVChange guifront.library/GF_SignalPrefsVChange
  2550.  
  2551.     NAME
  2552.         GF_SignalPrefsVChange - Signal prefs visual change (V37.3)
  2553.  
  2554.     SYNOPSIS
  2555.         GF_SignalPrefsVChange(app)
  2556.                               A0
  2557.  
  2558.         void GF_SignalPrefsVChange(char *);
  2559.  
  2560.     FUNCTION
  2561.         This function dispatches a signal to an application (or several, if
  2562.         they use the same appid), indicating its preferences have been edited
  2563.         (changed). This allows the application to recreate its GUIs using the
  2564.         new preferences and so always stay "in sync" with the user's current
  2565.         preferences.
  2566.  
  2567.     INPUTS
  2568.         appid    - ID of application to signal
  2569.  
  2570.     NOTES
  2571.         This function is not normally used by GUIFront programmers. It is
  2572.         intended for use mainly in preference editors to send out signals
  2573.         to all applications when the user has changed some settings and
  2574.         presses the "test" button.
  2575.  
  2576.     BUGS
  2577.         None known.
  2578.